为什么按Ctrl + M不起作用?

时间:2013-06-03 21:26:36

标签: c# winforms

我希望我的应用程序响应 Ctrl + M 它会做一些事情:

if (e.KeyCode == System.Windows.Forms.Keys.M 
    && e.KeyCode == System.Windows.Forms.Keys.RControlKey)

我试图点击 Ctrl + M (我尝试左右 Ctrl 键)它停在{的一个断点处{1}}但永远不会进去。为什么不呢?

1 个答案:

答案 0 :(得分:11)

你正在做的事情没有意义:

e.KeyCode是枚举值,一次只能容纳一个值,枚举值不能同时为Keys.MKeys.RControl(1)。

Windows将Control(和其他特殊键)作为修饰符处理,正确的方法如下:

if(e.KeyCode == Keys.M && e.Control) {

if(e.Keycode == Keys.M && (e.Modifiers & Keys.RControl) == Keys.RControl) {

(1)(不计算Flags,我知道Keys被标记为Flags,但我正在努力保持简单)