c# - KeyDown 中的多个键

标签 c# wpf 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)

相反。

关于c# - KeyDown 中的多个键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42854984/

相关文章:

jquery - 如何将左右箭头键映射为向上和向下键?

c# - 如何启动音调并让它无限期地运行直到我明确停止它?

c# - Bot 框架发送不必要的错误消息

c# - WPF:将 datagridrow 对象传递给转换器

wpf - 重新启动应用程序时 System.Windows.Markup.WpfXamlLoader.Load 中的 System.Threading.ThreadAbortException

c# - 发布两个不同版本应用程序的工作流程

javascript - 如何使用 keydown 函数制作 JavaScript 待办事项列表

javascript - 如何使用 javascript 和 asp.net 获取 gridview 中选中的行单元格值

c# - 按键事件处理程序,但在没有表单的 Windows 应用程序上

c# - 如何从 C# 解密 ruby​​ 中的 RijandelManaged?