2013-04-24 4 views
1

У меня проблема с фокусировкой на Control в пределах Window в WPF.WPF TextBox Фокус на contructor

На конструктор Window добавить TextBox следующим образом:

TextBox tb = new TextBox(); 
tb.Text = input; 
tb.SelectAll(); 
tb.Focus(); 

Я также вызвать метод Focus() снова на Window загруженного события.

Проблема в том, что иногда окно фокусируется, а в других случаях это не так! Это очень странное поведение, и мне было интересно, есть ли у кого-то такая же проблема, и я мог бы дать мне несколько советов.

Thanx

- ОБНОВЛЕНИЕ

Я нашел то, что является причиной этой проблемы, но не решение пока. Я использую WIA для сканирования документа, это вызывает ProgressBar, что заставляет мое приложение полностью потерять фокус.

Я попытался позвонить Application.Current.MainWindow.Focus(), но это не восстанавливает фокус, любые предложения?

+1

Сделайте это в конце события 'Window_Loaded', возможно, вы устанавливаете фокус на какой-то другой элемент управления. – Habib

+0

Помогает ли переместить вызов Focus() в событие Window.Loaded? Редактировать: Хабиб избил меня до этого :) – havardhu

+0

Как я уже упоминал в своем вопросе, я снова вызываю 'Focus()' на событие «Loaded» безрезультатно. –

ответ

0

Из памяти, я думаю, что последний вызов создания окна - это событие Windows.Activated. Вы можете попробовать запустить код фокуса на этом событии?

0

Как я уже говорил в моем обновленном вопросе все мое приложение теряет фокус из-за другое диалоговое окно отображается, что я в конечном итоге с помощью была:

Application.Current.MainWindow.Activate(); 

Это возвращает фокус моего приложения, и когда мой Window с TextBox показано, Focus применяется к этому управлению.

Надеюсь, это поможет кому-то!