背景:当用户按下 Alt 键时,我试图显示所有可用的键盘快捷键 - 类似于Office 2010中的行为。
但我无法检测何时按下 Alt 键,因为PreviewKeyDown
- 事件并不总是被触发。更准确地说:第一次按下该键时会触发,但是当我释放它并再次按下它时,事件不会被触发。这意味着,它每隔一次才会被解雇。我假设这与 Alt 键是一个特殊的系统键并触发窗口的主菜单这一事实有关,该菜单以某种方式吞下第二个事件。有趣的是,该事件适用于正确的 Alt 键。此外,PreviewKeyUp
- 事件始终针对两个键(左侧和右侧)触发。
我还尝试直接处理WM_KEYDOWN
和WM_SYSKEYDOWN
消息,但行为完全相同。
当我注册InputManager.Current.PostNotifyInput
事件时,我设法获得了所需的行为,但这个事件经常被触发 - 即使是每次鼠标移动等等,我都希望避免这种过度杀伤。
任何想法如何在按下 Alt 键时始终收到通知? Office 2010如何做到这一点?也许是否有一个事件通过按 Alt 键来通知是否激活了窗口的菜单?