C# 将Windows窗体ToolStripMenuItem ShortcutKeys属性设置为numpad键无效
我们能够为Windows窗体应用程序菜单项定义快捷键。这样我就可以告诉菜单项文件->保存,让快捷键Ctrl+S,并且在按下Ctrl+S后,菜单项的处理程序会“神奇地”执行 问题在于数字键盘键,C# 将Windows窗体ToolStripMenuItem ShortcutKeys属性设置为numpad键无效,c#,winforms,keyboard-shortcuts,C#,Winforms,Keyboard Shortcuts,我们能够为Windows窗体应用程序菜单项定义快捷键。这样我就可以告诉菜单项文件->保存,让快捷键Ctrl+S,并且在按下Ctrl+S后,菜单项的处理程序会“神奇地”执行 问题在于数字键盘键,ShortcutKey属性不接受它们(我不明白它们与其他可接受的键有何不同) MSDN声明该属性接受System.Windows.Forms.Keys类型(键值之一,默认为None);当参数不是键值之一时,将抛出一个InvalidEnumArgumentException。但例如Keys.Divide是键值
ShortcutKey
属性不接受它们(我不明白它们与其他可接受的键有何不同)
MSDN声明该属性接受System.Windows.Forms.Keys类型(键值之一,默认为None);当参数不是键值之一时,将抛出一个InvalidEnumArgumentException
。但例如Keys.Divide是键值之一,但它不能被使用
那么,如何将菜单项设置为具有Numpad*
或Numpad+
的快捷方式呢?是否需要在窗体的ProcessCmdKey事件中处理密钥 必须在快捷方式中使用Ctrl或Alt
例如:
//working:
toolStripMenuItem1.ShortcutKeys = Keys.Control | Keys.NumPad0;
//throws exception
toolStripMenuItem1.ShortcutKeys = Keys.NumPad0;
要回答有关使用Numpad
*
和Numpad+
的问题,请执行以下操作:
- Numpad
称为乘法键。枚举名称为*
Multiply
- Numpad
称为add键。枚举名称为+
Add
- Numpad
称为减法键。枚举名称为-
Subtract
ShortcutKeys
。例如,对于名为mnuMoreTime
的菜单项的Numpad+
:
this.mnuMoreTime.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.Add)));
当我想起来的时候,这是有道理的。