C# – Setting the Windows Forms ToolStripMenuItem ShortcutKeys property to numpad key does not work

c++keyboard-shortcutswinforms

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 property 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?

Best Solution

You must use Ctrl or Alt in shortcuts.

example:

//working:  
toolStripMenuItem1.ShortcutKeys = Keys.Control | Keys.NumPad0;  
//throws exception  
toolStripMenuItem1.ShortcutKeys = Keys.NumPad0;  
Related Question