需要3个或更多键的键盘快捷键

时间:2015-05-28 06:43:05

标签: c#

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

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

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

2 个答案:

答案 0 :(得分:2)

您必须组合键:

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

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

作为扩展,如果您想匹配Keys.Control而不管剩余修改键的状态如何,您可以这样做:

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

Control.ModifierKeys.HasFlag(Keys.Control)

答案 1 :(得分:1)

你必须这样编码:

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