KeyDown: mehrere Schlüssel erkennen
Wie kann ich bestimmen, in KeyDown
, die Strg gedrückt wurde.
private void listView1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Control && e.KeyCode == Keys.Up)
{
//do stuff
}
}
nicht arbeiten kann, weil nie beide Tasten gedrückt werden genau in der gleichen Sekunde. Sie immer zuerst die Strg und dann der andere...
InformationsquelleAutor der Frage | 2009-08-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie die Modifikatoren des KeyEventArgs etwa so:
MSDN-Referenz
InformationsquelleAutor der Antwort Garry Shutler
Aus der MSDN-Seite auf KeyEventArgs:
InformationsquelleAutor der Antwort Matt Hamilton
In der
KeyEventArgs
es gibt Eigenschaften, Strg, Alt und Shift , die zeigt, dass, wenn diese Tasten gedrückt werden.InformationsquelleAutor der Antwort IordanTanev
Können Sie versuchen, mit der
Keyboard
Objekt zu erkennen, dieIsKeyDown
Eigenschaft. Auch, wenn Sie nicht wollen, dass die browser-Verknüpfung, um über-ride-Sie könnenHandled
- Eigenschaft auf true.Aber seien Sie vorsichtig, wenn Sie über-Reiten-browser-shortcuts, da könnte es zu Verwechslungen führen.InformationsquelleAutor der Antwort zulumojo
Können Sie die ModifierKeys-Eigenschaft:
Beachten Sie, dass die ModifierKeys-Wert kann eine Kombination der Werte, wenn Sie so wollen, um zu erkennen, ob STRG gedrückt wurde, unabhängig vom Status der SHIFT - oder ALT - Schlüssel, die Sie benötigen, um durchführen einer bitweisen Vergleich wie in meinem Beispiel oben. Wenn Sie wollen, um sicherzustellen, dass keine weiteren Modifikatoren gedrückt wurde, sollten Sie stattdessen überprüfe auf Gleichheit:
InformationsquelleAutor der Antwort Fredrik Mörk
dieser Arbeit wird für Sie sicher. Sorgfältiger Umgang mit
KeyUp
Veranstaltung und nichtkeyDown
.Für mich
keyDown
hat nicht funktioniert,keyU
p gearbeitet, anstatt für den gleichen code.Ich weiß nicht warum, aber es scheint da
keyDown
Ereignis passiert, direkt nachdem Sie eine beliebige Taste drücken, auch wenn das war Strg - Taste, so dass, wenn Sie gedrückt, Strg+Bis Sie drücken Sie die Strg - Taste, bevor Sie die UP - Taste und damit das Ereignis eintreten wird, bevor Sie können drücken Sie die andere, auch ein drücken der zweiten Taste löst das Ereignis erneut aus.Während der Verwendung
KeyUp
wird nicht das Ereignis auszulösen, bis Sie die Taste loslassen, so dass Sie können drücken Sie Strg, und drücken Sie die zweite Taste, die trigger eine Veranstaltung.InformationsquelleAutor der Antwort A. Harkous
Dieser code funktioniert nur, wenn Sie drücken Sie zunächst LeftCtrl, dann "UP".
Wenn die Reihenfolge hat keine Bedeutung, ich empfehlen, dass man :
In diesem Fall, beide Strg sind berücksichtigt, und keine Bedeutung, die über die Reihenfolge.
InformationsquelleAutor der Antwort Siegfried.V
können Sie versuchen, meine arbeiten code :
ich benutze diesen code, weil ich nicht weiß, warum, wenn ich Sie benutze :
hat nicht funktioniert.
InformationsquelleAutor der Antwort jordyan
haben Sie zu erinnern, die gedrückten Tasten (dh in einem bool-array). und stellen Sie die position auf 1, wenn seine gepresst (keydown), und 0, wenn up .
diese Weise können Sie verfolgen, mehr als eine Taste. Ich schlage vor, mache ein array für spezielle Tasten nur
also können Sie tun:
InformationsquelleAutor der Antwort Niko