2010-06-01 3 views
0

두 개의 텍스트 상자가 있습니다. 텍스트 상자의 "onLostFocus"에 대한 이벤트 설정이 있습니다. 두 상자에 하나씩 단어를 입력하면 모두 잘됩니다. 내가 첫 번째 텍스트 상자를 다시 클릭하는 지점에서 단어 중간을 클릭하고 싶습니다 (사용자가 할 수있는 완벽한 resonable 한 물건). 여기에 onLostFocus 이벤트가 발생 내 코드 인 경우 : 0으로WPF에서 포커스를 잃을 때 캐럿 위치 가져 오기

void tbox_LostFocus(object sender, RoutedEventArgs e) 
     { 
     IInputElement focusedelement = FocusManager.GetFocusedElement(this); 
     if (focusedelement is TextBox) 
     { 
      TextBox focusedTextBox = focusedelement as TextBox; 
      int focusIndex = m_commandsStacker.Children.IndexOf(focusedTextBox); 
      int caretIndex = focusedTextBox.CaretIndex; 

캐럿의 인덱스를 반환 내가 focusedTextBox.CaretIndex를 호출 할 때. 이 시점에서 나는 전체 폼을 새로 고침하고 매개 변수와 다른 모든 종류의 whizzery를 설정하고 texbox 인덱스와 캐럿 위치를 저장하여 모든 것을 동일하게 되돌려 놓아야합니다. 캐럿이 단어 중간에 있어야하는 위치가 아닌 0을 반환하는 이유는 무엇입니까?

+0

WPF 3.5 SP1을 사용해 보았습니다. CaretIndex는 항상 포커스 된 텍스트 상자의 올바른 캐럿 위치를 반환합니다. 텍스트 상자에 처음으로 포커스가있는 경우에만 0이 반환됩니다. 이 버전으로 제한되는 –

+0

종류 :( – DrLazer

답변

0

이 코드는 C# express edition 2008 (WPF의 모든 버전)에서 작동하지 않습니다. 여기서 가장 좋은 일은 onTextChanged로 전환하고 거기에서 동일한 코드를 실행하여 치료를하는 것입니다. 코드를 여러 번 실행해야하는 것은 분명히 성가신 일입니다. 시간이되면 C#에서 작동하는지 확인하고

관련 문제