C# 为什么要按Ctrl+;M不工作了?

C# 为什么要按Ctrl+;M不工作了?,c#,winforms,C#,Winforms,我希望我的应用程序响应Ctrl+M,它将执行以下操作: if (e.KeyCode == System.Windows.Forms.Keys.M && e.KeyCode == System.Windows.Forms.Keys.RControlKey) 我尝试单击Ctrl+M(我尝试了左键和右键),它在if上的断点处停止,但从未进入。为什么不呢?你所做的没有意义: e.KeyCode是一个枚举值,一次只能保存一个值,枚举值不能同时为Keys.M和Keys.RCont

我希望我的应用程序响应Ctrl+M,它将执行以下操作:

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

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

你所做的没有意义:

e.KeyCode
是一个枚举值,一次只能保存一个值,枚举值不能同时为
Keys.M
Keys.RControl
(1)

Windows将控件(和其他特殊键)作为修改器处理,正确的方法如下:

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


(1) (不包括
标志
,我知道
被标记为
标志
,但我尽量让事情简单化)

看看这句话。
KeyCode
一次可以等于两个不同的值吗?用e.KeyCode替换e.KeyCode==whatever&whatever==whatever上有一个非常相似的帖子,所以
Ctrl+M
ASCII
code十进制
13
(=code of
M
减64)。您将获得与“回车”相同的代码或
Enter
。枚举
System.Windows.Forms.Keys.Enter
System.Windows.Forms.Keys.Return
都有值
13
if(e.Keycode == Keys.M && (e.Modifiers & Keys.RControl) == Keys.RControl) {