сделать акцент на текстовом поле, когда отображается элемент управления - PullRequest
0 голосов
/ 25 октября 2011

Существует пользовательский элемент управления UserControl, который содержит TextBox. Как мне сфокусироваться на текстовом поле, когда отображается UserControl? Я пытался вызвать TextBox.Focus на UserControl.IsVisibleChanged и TextBox.IsVisibleChanged, но это не помогло. Что еще я могу попробовать?

Кажется, что-то заставляет TextBox потерять фокус. Подход, который я упомянул, обычно работает. Как я могу узнать, что приводит к потере фокусировки TextBox? Я попытался прослушать событие TextBox.LostFocus, но его параметры не содержат много ценной информации, и я также не вижу предыдущих методов в трассировке стека.

код:

   void TextBox1_IsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e)
        {
            if (this.TextBox1.IsVisible)
                this.TextBox1.Focus();
        }

Как я уже говорил, это работает, если я использую один и тот же код в похожем сценарии в тестовом проекте, но не работает в моем приложении (приложение большое, и я в основном исправляю в нем ошибки, и этот среди них). Поэтому я думаю, что проблема не в том, что фокус установлен неправильно (как я думал, когда открывал этот вопрос), я думаю, что проблема в том, что что-то еще сбрасывает фокус. Я пытаюсь найти, что это здесь: Узнайте, почему текстовое поле потеряло фокус .

Ответы [ 2 ]

0 голосов
/ 25 октября 2011

Я не совсем уверен, почему он не возвращается после изменения видимости ... однако, когда я сделал TextBox1.Focus() в IsEnabledChanged, это сработало как шарм.

0 голосов
/ 25 октября 2011

Используйте UC в качестве моста, когда вы показываете UC, а затем вызываете некоторую функцию для фокусировки TextBox.

...