2010-04-25 3 views
4

Nous avons la possibilité de définir des touches de raccourci pour les éléments de menu de l'application Windows Forms. De cette façon, je peux dire un élément de menu Fichier-> Enregistrer pour avoir le raccourci clavier Ctrl + S et le gestionnaire de l'élément de menu est « magique » exécuté après avoir appuyé sur Ctrl +S.La définition de la propriété ToolStripMenuItem ShortcutKeys Windows à la clé du pavé numérique ne fonctionne pas

Le problème provient des touches du pavé numérique, la propriété ShortcutKey ne les accepte pas (je ne comprends pas en quoi elles sont différentes des autres clés acceptables).

MSDN indique que la propriété accepte de type System.Windows.Forms.Keys (une des valeurs clés La valeur par défaut est Aucun..); Un InvalidEnumArgumentException est renvoyé lorsque le paramètre n'est pas l'un des Keys. Mais par exemple Keys.Divide IS l'une des valeurs clés, et pourtant il ne peut pas être utilisé.

Alors, comment puis-je définir un élément de menu pour avoir un raccourci pour le pavé numérique * ou le pavé numérique +? Ai-je besoin de gérer la clé dans l'événement ProcessCmdKey de Form?

Répondre

2

Vous devez utiliser Ctrl ou Alt dans les raccourcis.

exemple:

//working: 
toolStripMenuItem1.ShortcutKeys = Keys.Control | Keys.NumPad0; 
//throws exception 
toolStripMenuItem1.ShortcutKeys = Keys.NumPad0; 
+0

qui fait sens, quand je pense à ce sujet. – Axarydax

1

Pour répondre à la question sur l'utilisation Numpad * et Numpad +:

  • Numpad * est appelée la clé se multiplient. Le nom de l'énumération est Multiply.

  • Le pavé numérique + est appelé clé d'ajout. Le nom de l'énumération est Add.

  • Le pavé numérique - est appelé clé de soustraction. Le nom de l'énumération est Subtract.

Il est impossible de sélectionner ceux-ci dans la fenêtre de propriétés de Visual Studio (au moins pas dans Visual Studio 2008), mais le code source correspondant peut être modifié; où la propriété ShortcutKeys est définie. Par exemple, pour Numpad + pour un élément de menu nommé mnuMoreTime:

this.mnuMoreTime.ShortcutKeys = 
    ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | 
            System.Windows.Forms.Keys.Add))); 
Questions connexes