We have the ability to define shortcut keys for Windows Forms application menu items. That way I can tell a menu item File->Save to have the shortcut key Ctrl + S and the menu item's handler is "magically" executed after pressing Ctrl + S.
The trouble is with the numeric keypad keys, the ShortcutKey
property does not accept them (I don't understand how are they different from the other acceptable keys).
MSDN states that the propert开发者_运维百科y accepts type System.Windows.Forms.Keys (One of the Keys values. The default is None.); and an InvalidEnumArgumentException
would be thrown when the parameter is not one of Keys values. But for example Keys.Divide IS one of Keys values, and yet it can't be used.
So how can I set a menu item to have a shortcut for Numpad *
or Numpad +
? Do I need to handle the key in Form's ProcessCmdKey event?
You must use Ctrl or Alt in shortcuts.
example:
//working:
toolStripMenuItem1.ShortcutKeys = Keys.Control | Keys.NumPad0;
//throws exception
toolStripMenuItem1.ShortcutKeys = Keys.NumPad0;
To answer the question about using Numpad *
and Numpad +
:
Numpad
*
is called the multiply key. The enumeration name isMultiply
.Numpad
+
is called the add key. The enumeration name isAdd
.Numpad
-
is called the subtract key. The enumeration name isSubtract
.
It is not possible to select these in Visual Studio's property window (at least not in Visual Studio 2008), but the corresponding source code can be edited; where property ShortcutKeys
is set. For example for Numpad +
for a menu item named mnuMoreTime
:
this.mnuMoreTime.ShortcutKeys =
((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control |
System.Windows.Forms.Keys.Add)));
精彩评论