2017-03-17 15 views
1

1つの修飾キーと1つのキーで動作する理由はわかりませんが、1つの修飾キーと複数のキーでは機能しません(Ctr + R + S + Vを押すと)。そして回避策があれば?KeyDownの複数のキー

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

あなたはCTRL + R + S + Vを一緒に押さえたいのですか? – Evk

+1

キーは1つの変数ですが、同時に3つの異なる値に等しいことはできません –

+0

http://stackoverflow.com/a/19013440/6240567 - これは役に立つかもしれません - @ArsenMkrtchyanが頭の爪に当たったと思います。この回答は、同時に押された複数の*キーを検出する方法を示しています:) EDIT:下記のEvkの答え(このコメントと同時に投稿)は事実上同じです:) –

答えて

3

Key列挙はFlagsとマークされていないので、複数の値を保持することはできません。そのイベントのargsにはただ1つのKeyというプロパティがあるので、ただ1つのキーです。したがって、お客様のifは、あなたの&&条件のうち3つが相互に排他的であるため、真となることはありません。

あなたが代わりに行うことができますすることはこれです:あなたはALTとCONTROLの両方の場合は気にしない場合は、他の修飾キーを同時に押すことを可能にする(そうしたい場合は、その

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

} 

注意たとえば、一緒に押すことがあります)、代わりに

Keyboard.Modifiers.HasFlag(ModifierKeys.Control) 

を使用する必要があります。

関連する問題