当按下ALT键时,PreviewKeyDown-Event并不总是触发

时间:2015-06-16 15:45:08

标签: c# wpf windows

背景:当用户按下 Alt 键时,我试图显示所有可用的键盘快捷键 - 类似于Office 2010中的行为。

但我无法检测何时按下 Alt 键,因为PreviewKeyDown - 事件并不总是被触发。更准确地说:第一次按下该键时会触发,但是当我释放它并再次按下它时,事件不会被触发。这意味着,它每隔一次才会被解雇。我假设这与 Alt 键是一个特殊的系统键并触发窗口的主菜单这一事实有关,该菜单以某种方式吞下第二个事件。有趣的是,该事件适用于正确的 Alt 键。此外,PreviewKeyUp - 事件始终针对两个键(左侧和右侧)触发。

我还尝试直接处理WM_KEYDOWNWM_SYSKEYDOWN消息,但行为完全相同。

当我注册InputManager.Current.PostNotifyInput事件时,我设法获得了所需的行为,但这个事件经常被触发 - 即使是每次鼠标移动等等,我都希望避免这种过度杀伤。

任何想法如何在按下 Alt 键时始终收到通知? Office 2010如何做到这一点?也许是否有一个事件通过按 Alt 键来通知是否激活了窗口的菜单?

0 个答案:

没有答案