我希望能够允许我的应用程序的用户按Ctrl + Shift +数字小键盘的键在我正在开发的应用程序中充当导航快捷方式。令我惊讶的是,似乎无法识别这种组合键。
按Shift +键盘可以激活大多数键盘上显示的扩展功能,例如光标键(在2、4、6和8上),向下/向上翻页(在3和9上),结束/主页(在1和7上) )等。
WinForms中的各种键事件报告的结果与实际按下的光标键等完全相同。因此,我无法区分例如Shift + KeyPad4和CursorLeft。我不能只是寻找Ctrl + CursorLeft而不是Ctrl + Shift + KeyPad4,因为人们可能会使用Ctrl + CursorLeft进行文本编辑。
有什么方法可以正确检测这些移位的数字小键盘组合吗?
谢谢!
答案 0 :(得分:1)
使用一个类来跟踪按下了哪些键。
当您收到OnKeyDown
事件时,将该键存储为向下,然后当您遇到OnKeyUp
事件时,将该键从存储中删除。
然后在相同的OnKeyDown
事件中,存储了按键之后,进行检查以查看您期望的所有三个键是否都按下。
它看起来像这样:
public void OnKeyDown(EventArgs ...) {
_keyStore.KeyDown(eventArgs.keyPress);
if(_keyStore.AltCtrlKeyPad4IsDown()) { //Abstract this so you can perform multiple checks.
//Do shortcut.
}
}
public void OnKeyUp(EventArgs ...) {
_keyStore.KeyUp(eventArgs.keyPress);
}
请注意,这是sudo代码,不会编译。