Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使我的表单在C#中响应Ctrl-Alt?_C#_.net_Winforms_User Interface - Fatal编程技术网

如何使我的表单在C#中响应Ctrl-Alt?

如何使我的表单在C#中响应Ctrl-Alt?,c#,.net,winforms,user-interface,C#,.net,Winforms,User Interface,我有一个简单的C#表单,它有一个网格和几个按钮 我希望表单在按下Ctrl-Alt时稍微更改其GUI, 并在释放Ctrl-Alt时使GUI恢复到原始状态 我知道如何检查是否按下了Ctrl+Alt,一种方法是通过Control.ModifierKeys 我的问题是: 对于按钮按下,我有响应它的事件处理程序。 对于键盘常规键,我有响应它的事件处理程序。 但是Ctrl-Alt键不是一个常规键——按下时不会引发事件 那我该怎么办 我想到的一种方法是启用一个将运行的计时器,如果按下Ctrl-Alt,则每隔2

我有一个简单的C#表单,它有一个网格和几个按钮

我希望表单在按下Ctrl-Alt时稍微更改其GUI, 并在释放Ctrl-Alt时使GUI恢复到原始状态

我知道如何检查是否按下了Ctrl+Alt,一种方法是通过Control.ModifierKeys

我的问题是:

对于按钮按下,我有响应它的事件处理程序。 对于键盘常规键,我有响应它的事件处理程序。 但是Ctrl-Alt键不是一个常规键——按下时不会引发事件

那我该怎么办

我想到的一种方法是启用一个将运行的计时器,如果按下Ctrl-Alt,则每隔200毫秒检查一次

有比计时器更好的方法吗


谢谢

您可能可以重写表单的方法来拾取击键

 protected override bool ProcessCmdKey(ref Message msg, Keys keyData)    
 {
    if (keyData == (Keys.Control | Keys.Alt ) 
    {
       //Do Stuff here
    }
    return base.ProcessCmdKey(ref msg,keyData);
 }

签入键关闭。但这是个糟糕的主意。用户如何按ctrl+alt+del而不触发您的操作?这些是修改键。除了在全屏游戏中,它们应该只与非修改键结合使用。正如评论中提到的,这会让用户感到沮丧。强制作用于包含
Control
Alt
的每个组合键?以及可能短路其他有效需求?啊。