C# Keys-Enumeration Verwirrt: Schlüssel.Alt oder Schlüssel.RButton | - Tasten.ShiftKey | - Tasten.Alt
Ich versuche zu testen, ob die Alt-Taste gedrückt wurde.
Hatte ich eine Prüfung ähnlich:
private void ProcessCmdKey(Keys keyData)
{
if (keyData == Keys.Alt)
{
System.Console.WriteLine ("Alt Key Pressed");
}
}
Sowieso unnötig zu sagen, wenn ich breakpointed, wenn ich gedrückt hatte, die Alt-Taste der debugger mir gesagt, der Schlüssel, der gedrückt wurde, war tatsächlich der Schlüssel.RButton | - Tasten.ShiftKey | - Tasten.Alt
Kann jemand etwas Licht auf, was Los ist oder vielleicht zeigen Sie mir einen Artikel, der erklären kann?
Dank
FZ
Bearbeiten:
Ich bin immer noch ein wenig verloren, warum die ENUM hätten andere bit-Werte gesetzt und nicht einfach die Alt-Taste? Ich verstehe, dass die enum kann mehr als 1 Staat mit den Fahnen attrivbute aber ich bin nicht sicher, warum es funktioniert, wenn alle, die ich gedrückt wurde Alt?
- Ich bin neugierig, warum diese flags werden immer gesetzt, auch. Scheint wie ein bug.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie möchten, um zu testen, ob
Alt
ist Teil der gedrückten Tasten, können Sie durch ausführen einer bitweisen test;Tasten ist ein Flags-Aufzählung. Dies bedeutet, es kann mehr als ein Wert zu einem bestimmten Zeitpunkt. Sie sollten überprüfen, etwa so:
Enum mit "FlagsAttribute" implementiert mithilfe von bits.
Siehe diesen link für einen guten start - http://msdn.microsoft.com/en-us/library/cc138362.aspx
EDIT: Sind Sie durch betätigen der RECHTEN (Maustaste) mit gedrückter Shift-Taste während des Betriebs, zu wählen/markieren Sie etwas, während des Debuggens?
Mark-Technik (die akzeptierte Antwort) arbeitet für die Zusatztasten, aber es erwischte mich überrascht, dass einige Tasten (z.B. die Pfeiltasten) sind Kombinationen von bits, und wird nicht funktionieren. Zum Beispiel der folgende test stellt sich heraus, um wahr zu sein:
Habe ich geschrieben einige nützliche kleine Funktionen für key handling auf eine Verwandte StackOverflow-post über Pfeil-Schlüssel-handling.