Приложение не получает фокус клавиатуры при входе из другого приложения - PullRequest
0 голосов
/ 27 февраля 2020

В WPF у меня есть событие Window_KeyDown, которое меняет форму курсора мыши, когда пользователь нажимает Shift. Он работает, как и ожидалось, за исключением того, что я нажал на другое приложение. Поэтому я добавил событие Window_MouseEnter, подобное этому, чтобы захватить фокус клавиатуры, когда мышь снова входит в мое приложение:

private void Window_MouseEnter(object sender, MouseEventArgs e)
        {
            IInputElement b = Keyboard.Focus(this);
            this.Focus();
            Debug.WriteLine(b + DateTime.Now.ToLongTimeString());
        }

Я вижу, что событие MouseEnter запускается (со строкой отладки), когда мышь входит в приложение, но мое приложение до сих пор не получает события клавиатуры, пока я не нажму на приложение.

Это раздражает, потому что курсор мыши меняется должным образом, когда мышь входит в элементы управления в моем приложении, так что можно ожидать, что все будет работать, но функции shift-мыши не работают, пока после щелчка.

Чего мне не хватает?

1 Ответ

1 голос
/ 27 февраля 2020

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

С Activate () метод Focus () не нужен.

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