Получить позицию каретки при потере фокуса в WPF - PullRequest
0 голосов
/ 01 июня 2010

У меня есть два текстовых поля. У меня есть настройка события для «onLostFocus» текстовых полей. Если я закончу вводить слово в оба поля один за другим, все будет хорошо. В тот момент, когда я нажимаю обратно на первое текстовое поле, я хочу нажать на полпути через слово (совершенно разумная вещь для пользователя). Когда происходит событие onLostFocus, вот мой код:

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;

Индекс каретки возвращается как 0, когда я вызываю focusTextBox.CaretIndex. В этот момент мне нужно обновить всю форму и установить параметры и все другие виды странностей, сохраняя индекс texbox и позицию каретки, чтобы вернуть все обратно. Почему он возвращает 0, а не позицию, в которой курсор должен находиться на полпути между словом?

1 Ответ

0 голосов
/ 02 июня 2010

Это просто не работает в c # express edition 2008 (какой бы версией WPF это ни было), поэтому лучше всего здесь переключиться на onTextChanged и запустить там точно такой же код, который сработает. Очевидно, раздражает то, что вы должны запускать код несколько раз, чем если бы он работал на потерянном фокусе. Когда у меня будет время, я проверю, работает ли он в c # express 2010, когда мы обновляем (в конце концов)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...