如何制作需要3个或更多按键的键盘快捷键? 像Ctrl + Alt + S?
if (e.KeyCode == Keys.S && Control.ModifierKeys == Keys.Control && Control.ModifierKeys == Keys.Alt)
{
SAVEc_FORCE();
}
但它对我不起作用。有什么建议吗?
答案 0 :(得分:2)
您必须组合键:
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)
答案 1 :(得分:1)
你必须这样编码:
if(e.KeyCode == Keys.S && e.Modifiers == (Keys.Control | Keys.Alt))