2017-03-17 4 views
1

Ich verstehe nicht, warum es mit einem Modifikatoren und einem Schlüssel funktioniert, aber nicht einen Modifikator und mehrere Tasten (wenn Ctr + R + S + V alle zusammen gedrückt werden). Und wenn es einen Workaround gibt?Mehrere Tasten in KeyDown

if ((Keyboard.Modifiers == ModifierKeys.Control) 
     && (e.Key == Key.R) 
     && (e.Key == Key.S) 
     && (e.Key == Key.V)) 
{ ... } 
+1

Sie meinen, Sie möchten STRG + R + S + V, alle zusammen gedrückt halten? – Evk

+1

Key ist eine Variable, es kann nicht gleich 3 verschiedene Werte zur gleichen Zeit sein –

+0

http://StackOverflow.com/A/19013440/6240567 - das könnte helfen - @ArsenMkrtchyan hat den Nagel auf den Kopf getroffen, denke ich. Diese Antwort zeigt, wie * mehrere * gleichzeitig gedrückte Tasten erkannt werden. EDIT: Evks Antwort unten (gepostet zur selben Zeit wie dieser Kommentar) ist praktisch die selbe :) –

Antwort

3

Key Aufzählung ist nicht mit Flags markiert und so können nicht mehrere Werte halten. Und es gibt nur eine Key Eigenschaft in diesem Ereignis args, also nur einen Schlüssel. Daher kann Ihre if nie wahr sein, weil 3 Ihrer && Bedingungen sich gegenseitig ausschließen.

Was können Sie stattdessen tun, ist dies:

if ((Keyboard.Modifiers == ModifierKeys.Control) 
       && (Keyboard.IsKeyDown(Key.R)) 
       && (Keyboard.IsKeyDown(Key.S)) 
       && (Keyboard.IsKeyDown(Key.V))) { 

} 

Beachten Sie, dass, wenn Sie möchten, dass andere Zusatztasten ermöglichen die gleichzeitig (so gedrückt werden, wenn Sie sich nicht, wenn beide ALT und CONTROL egal könnte zum Beispiel zusammengedrückt werden), dann sollten Sie stattdessen

verwenden.