2011-10-25 2 views
0

Существует пользовательский 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(); 
     } 

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

+0

UIElement.Focus() будет работать, если вы попытаетесь подключить его к видимому событию изменения вашего текстового поля. Можете ли вы поделиться некоторым кодом, который может быть полезен для обеспечения вашего sceanrio? –

+0

Я обновил свой вопрос. –

+0

Исправлена ​​проблема с этим вопросом: http://stackoverflow.com/questions/7892081/find-out-why-textbox-has-lost-focus. –

ответ

-1

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

+0

Я уже пробовал это, и я написал об этом свой вопрос. –

0

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

Смежные вопросы