KeyDown中的多个键

时间:2017-03-17 10:23:56

标签: c# wpf keydown

我不明白为什么它适用于一个修饰符和一个键,而不是一个修饰符和多个键(当Ctr + R + S + V全部按下时)。如果有任何解决方法?

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

1 个答案:

答案 0 :(得分:3)

Key枚举未标记为Flags,因此无法保存多个值。并且在该事件args中只有一个Key属性,因此只有一个键。因此,您的if永远不会成为现实,因为您的&&个条件中有3个是互斥的。

你可以做的是:

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

}

请注意,如果您想同时按下其他修改键(因此,如果您不在乎,例如,如果ALT和CONTROL都可能被按在一起),那么您应该使用

Keyboard.Modifiers.HasFlag(ModifierKeys.Control)

代替。