我们可以为Windows窗体应用程序菜单项定义快捷键。这样我可以告诉菜单项文件 - >保存以使快捷键 Ctrl + S 并且菜单项的处理程序是“神奇地” “按 Ctrl + S 后执行。
问题出在数字小键盘上,ShortcutKey
属性不接受它们(我不明白它们与其他可接受的键有什么不同)。
MSDN声明该属性接受类型 System.Windows.Forms.Keys (其中一个Keys值。默认为None。);当参数不是 Keys 值之一时,将抛出InvalidEnumArgumentException
。但是例如Keys.Divide IS 一个Keys值,但它不能被使用。
那么如何设置菜单项以获得Numpad *
或Numpad +
的快捷方式?我是否需要在Form的 ProcessCmdKey 事件中处理密钥?
答案 0 :(得分:2)
您必须在快捷方式中使用 Ctrl 或 Alt 。
示例:
//working:
toolStripMenuItem1.ShortcutKeys = Keys.Control | Keys.NumPad0;
//throws exception
toolStripMenuItem1.ShortcutKeys = Keys.NumPad0;
答案 1 :(得分:1)
回答有关使用Numpad *
和Numpad +
的问题:
Numpad *
被称为乘法键。枚举名称为Multiply
。
Numpad +
被称为添加键。枚举名称为Add
。
Numpad -
被称为减法键。枚举名称为Subtract
。
无法在Visual Studio的属性窗口中选择它们(至少在Visual Studio 2008中没有),但可以编辑相应的源代码;其中设置了属性ShortcutKeys
。例如,对于名为+
的菜单项的Numpad mnuMoreTime
:
this.mnuMoreTime.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.Add)));