KeyDown 中的多个键
Multiple keys in KeyDown
我不明白为什么它适用于一个修饰符和一个键,而不是一个修饰符和多个键(当同时按下 Ctr+R+S+V 时)。如果有任何解决方法?
if ((Keyboard.Modifiers == ModifierKeys.Control)
&& (e.Key == Key.R)
&& (e.Key == Key.S)
&& (e.Key == Key.V))
{ ... }
Key
枚举没有用 Flags
标记,因此不能包含多个值。在该事件参数中只有一个 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)
相反。
我不明白为什么它适用于一个修饰符和一个键,而不是一个修饰符和多个键(当同时按下 Ctr+R+S+V 时)。如果有任何解决方法?
if ((Keyboard.Modifiers == ModifierKeys.Control)
&& (e.Key == Key.R)
&& (e.Key == Key.S)
&& (e.Key == Key.V))
{ ... }
Key
枚举没有用 Flags
标记,因此不能包含多个值。在该事件参数中只有一个 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)
相反。