Установка для свойства Windows Forms ToolStripMenuItem ShortcutKeys ключа numpad не работает - PullRequest
4 голосов
/ 25 апреля 2010

У нас есть возможность определять сочетания клавиш для пунктов меню приложений Windows Forms. Таким образом, я могу сказать пункту меню Файл-> Сохранить , что у него есть клавиша быстрого вызова Ctrl + S , и обработчик пункта меню «магически» выполняется после нажатия Ctrl + S .

Проблема с клавишами цифровой клавиатуры, свойство ShortcutKey не принимает их (я не понимаю, чем они отличаются от других допустимых клавиш).

MSDN утверждает, что свойство принимает тип System.Windows.Forms.Keys (Одно из значений ключей. Значение по умолчанию - Нет.); и InvalidEnumArgumentException генерируется, когда параметр не является одним из значений Keys . Но, например, Keys.Divide IS одно из значений ключей, но его нельзя использовать.

Так, как я могу установить пункт меню, чтобы иметь ярлык для Numpad * или Numpad +? Нужно ли обрабатывать ключ в событии формы ProcessCmdKey ?

Ответы [ 2 ]

2 голосов
/ 26 апреля 2010

Вы должны использовать Ctrl или Alt в ярлыках.

пример:

//working:  
toolStripMenuItem1.ShortcutKeys = Keys.Control | Keys.NumPad0;  
//throws exception  
toolStripMenuItem1.ShortcutKeys = Keys.NumPad0;  
1 голос
/ 15 сентября 2010

Чтобы ответить на вопрос об использовании 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)));
...