【问题标题】:Keyboard shortcuts which needs 3 or more keys需要 3 个或更多键的键盘快捷键
【发布时间】:2015-05-28 06:43:04
【问题描述】:

如何制作需要按下 3 个或更多键的键盘快捷键?
像 Ctrl+Alt+S?

if (e.KeyCode == Keys.S && Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Alt)
{
        SAVEc_FORCE();
}

但这对我不起作用。有什么建议吗?

【问题讨论】:

标签: c#


【解决方案1】:

你必须组合键:

if (e.KeyCode == Keys.S && (Control.ModifierKeys == Keys.Control | Keys.Alt))

Keys 是标志 - 单个值由所有单独的枚举值(任何你想要的)组成。因此,当您同时按下Control 和Alt 时,对应的值为Keys.Control | Keys.Alt。当然,这意味着Control.ModifierKeys == Keys.Control 和Control.ModifierKeys == Keys.Alt 都不会返回true - 即使ModifierKeys 包含这两者,它也不等于 .

作为扩展,如果你想匹配Keys.Control而不考虑剩余修饰键的状态,你可以这样做:

(Control.ModifierKeys & Keys.Control) == Keys.Control

或

Control.ModifierKeys.HasFlag(Keys.Control)

【讨论】:

  • if (e.KeyCode == Keys.S && (Control.ModifierKeys == (Keys.Control | Keys.Alt))) 为我工作。谢谢!
【解决方案2】:

你必须这样编码:

if(e.KeyCode == Keys.S && e.Modifiers == (Keys.Control | Keys.Alt))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-22
    • 2018-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多