将Windows窗体ToolStripMenuItem ShortcutKeys属性设置为numpad键不起作用

时间:2010-04-25 16:23:38

标签: c# winforms keyboard-shortcuts shortcut-key

我们可以为Windows窗体应用程序菜单项定义快捷键。这样我可以告诉菜单项文件 - >保存以使快捷键 Ctrl + S 并且菜单项的处理程序是“神奇地” “按 Ctrl + S 后执行。

问题出在数字小键盘上,ShortcutKey属性不接受它们(我不明白它们与其他可接受的键有什么不同)。

MSDN声明该属性接受类型 System.Windows.Forms.Keys (其中一个Keys值。默认为None。);当参数不是 Keys 值之一时,将抛出InvalidEnumArgumentException。但是例如Keys.Divide IS 一个Keys值,但它不能被使用。

那么如何设置菜单项以获得Numpad *或Numpad +的快捷方式?我是否需要在Form的 ProcessCmdKey 事件中处理密钥?

2 个答案:

答案 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)));