2013-06-03 65 views
0

我想我的应用程序响应按Ctrl + 中号它会做一些事情:为什么按下Ctrl + M不起作用?

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

我试着点击按Ctrl + 中号(我试过左,右Ctrl键键),并在if的某个断点处停止,但从未进入。为什么不呢?

+1

看看声明。 KeyCode可以同时等于两个不同的值吗? –

+0

用e.KeyCode&whatever ==替换e.KeyCode == –

+0

在SO [这里]有一个非常类似的帖子(http://stackoverflow.com/questions/1265634/keydown-recognizing-multiple-keys) –

回答

11

你在做什么无厘头:

e.KeyCode是一个枚举值,它只能在同一时间有一个值,枚举值不能同时Keys.MKeys.RControl在同一时间(1 )。

Windows处理控制(和其他特殊键)作为改性剂,正确的方法是,像这样:

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

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

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

相关问题