В 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-мыши не работают, пока после щелчка.
Чего мне не хватает?