0

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

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

我尝试单击Ctrl+ M(我尝试了左右Ctrl键),它在断点处停止if但从未进入。为什么不呢?

4

1 回答 1

11

你在做什么没有意义:

e.KeyCode是一个枚举值,一次只能保存一个值,一个枚举值不能同时是两者Keys.MKeys.RControl1)。

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

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

或者

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

(1)(不算Flags,我知道Keys被标记为Flags,但我试图让事情变得简单)

于 2013-06-03T21:30:39.777 回答