C #: Mise sur les touches appropriées pressée à partir de KEYDATA KeyEventArgs
-
21-08-2019 - |
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.
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