2010-01-07 6 views
1

Donc je veux utiliser Ctrl plus un chiffre sur le pavé numérique pour un raccourci vers un élément de menu (ou un bouton). Mais il semble que je ne suis pas en mesure de le faire avec System.Windows.Forms.ShortcutComment utiliser les touches de raccourci du pavé numérique dans un formulaire C# Windows?

Par exemple: this.menuItem3.Shortcut = System.Windows.Forms.Shortcut.Alt7; fonctionnera pour le numéro de pad non-num 7, mais pas pour le pavé numérique 7. Je veux préciser pour que cela fonctionne sur le pavé numérique (je m'en fous si ça marche pour les deux).

Répondre

1

Dans le concepteur visuel, il existe une option dans les propriétés de l'élément de menu qui le permet.

La propriété est ShortcutKeys - les touches numériques sont des options dans la liste déroulante pour cela.

Dans le codebehind le concepteur génère:

this.myToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.NumPad0))); 

Ainsi, vous pouvez facilement vous-même de mettre votre code si vous voulez. Une chose à noter est que cela ne fonctionne que lorsque le verrouillage numérique est activé - je suis à peu près sûr qu'il n'est pas possible d'attribuer deux touches de raccourci au même élément de menu, donc si vous voulez que cela fonctionne quand Num Lock est éteint ainsi que sur alors vous devrez gérer les événements de presse clé.

This SO post covers comment vous pouvez faire cela. Le code du poste est ci-dessous, avec l'insert spécifié (car il est la clé non Num Lock pour correspondre Numpad0 en haut

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == (Keys.Control | Keys.Insert)) 
    { 
     // Call your menu item handler here 
     return true; 
    } 
    return base.ProcessCmdKey(ref msg, keyData); 
} 
+0

Merci pour la réponse David -. Je l'apprécie C'est le genre de. chose que je me attendais, je serais en mesure de le faire, cependant, il ne semble pas que je peux. la propriété que j'ai est

System.Windows.Forms.Shortcut Shortcut
(comme ci-dessus), le contrôle est System.Windows.Forms.MenuItem. J'ai cependant été en mesure de passer outre la
ProcessCmdKey
méthode comme démontré dans le post que vous avez lié.Cela fonctionne bien - mais pas exactement ce que je voulais: D Merci !!! –

Questions connexes