Сохраните фокус на элементе пользовательского интерфейса, но нажмите кнопку в другом диалоговом окне. WPF C # - PullRequest
0 голосов
/ 24 октября 2009

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

Я попытался установить окно клавиатуры как не фокусируемое. Хотя это, вероятно, хорошо установить, это не решило мою проблему.

Ответы [ 3 ]

1 голос
/ 24 октября 2009

Вы можете просто вернуть фокус к исходному окну асинхронно:

public static void BackgroundFocus(this UIElement el)    
{        
    Action a = () => el.Focus();        
    el.Dispatcher.BeginInvoke(DispatcherPriority.Background, a);    
}

Но это не идеально, потому что оригинальная заголовок окна будет мерцать при потере фокуса ... Почему бы вам не использовать Popup вместо?

0 голосов
/ 26 октября 2009

Использование Popup , как уже предлагалось, кажется хорошим решением. Что касается вашего собственного окна, попробуйте установить Window.ShowActivation в false.

0 голосов
/ 26 октября 2009

Проверьте функцию SetForegroundWindow (), Я использовал это давным-давно где-то в моем проекте Может быть, это может помочь вам

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