C #: Erste die richtigen Tasten gedrückt von KeyEventArgs' KeyData
-
21-08-2019 - |
Frage
Ich bin ein KeyDown
Ereignis Trapping und ich muss in der Lage sein zu überprüfen, ob die aktuellen Tasten nach unten gedrückt sind: Strg + Umschalttaste + M ?
Ich weiß, ich brauche die e.KeyData
vom KeyEventArgs
, die Keys
Enum und etwas mit Enum-Flaggen und Bits zu verwenden, aber ich bin nicht sicher, wie für die Kombination zu überprüfen.
Lösung
Sie müssen die Modifikatoren verwenden Eigenschaft der KeyEventArgs Klasse.
So etwas wie:
//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");
}
Andere Tipps
Ich denke, die einfachste diese verwenden:
if(e.KeyData == (Keys.Control | Keys.G))
Sie können prüfen, eine Technik ähnlich der folgenden verwenden:
if(Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Shift)
Dies in Kombination mit den normalen Schlüsselkontrollen gibt Ihnen die Antwort, die Sie suchen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow