Question

Je suis le piégeage d'un événement et je dois KeyDown de pouvoir vérifier si les touches enfoncées en cours sont: Ctrl + Maj + M ?


Je sais que je dois utiliser le e.KeyData du KeyEventArgs, l'ENUM et quelque chose Keys avec des drapeaux et des bits Enum mais je ne suis pas sûr sur la façon de vérifier la combinaison.

Était-ce utile?

La solution

Vous devez utiliser les Modificateurs de la classe KeyEventArgs.

Quelque chose comme:

//asumming e is of type KeyEventArgs (such as it is 
// on a KeyDown event handler
// ..
bool ctrlShiftM; //will be true if the combination Ctrl + Shift + M is pressed, false otherwise

ctrlShiftM = ((e.KeyCode == Keys.M) &&               // test for M pressed
              ((e.Modifiers & Keys.Shift) != 0) &&   // test for Shift modifier
              ((e.Modifiers & Keys.Control) != 0));  // test for Ctrl modifier
if (ctrlShiftM == true)
{
    Console.WriteLine("[Ctrl] + [Shift] + M was pressed");
}

Autres conseils

Je pense que le plus facile à utiliser ceci:

if(e.KeyData == (Keys.Control | Keys.G))

Vous pouvez vérifier en utilisant une technique similaire à ce qui suit:

if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)

en combinaison avec les contrôles clés normaux vous donnera la réponse que vous cherchez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top