c# KeyDown事件多个键加ControlKey

本文关键字:ControlKey KeyDown 事件 | 更新日期: 2023-09-27 18:18:18

我想识别我的控件的按键。为此,我使用KeyDown事件。我想检测的键击类型是CTRL + A或CTRL + C等等。(所以多个键的组合)

现在我已经审查了KeyEventArgs并找到了Keys enum。(只要使用|和&组合并找到正确的键)一个例子可以是Shift + A,然后KeyData Enum的值是:Shift键| Shift | A

,

当我尝试用控制键按下(所以控制+ A)我得到131137作为响应?我不知道为什么我没有得到像ControlKey | Control | A(或类似的东西)

我已经认识到,如果我尝试使用A列表131137与B列表131138与C列表131139等…所以我认为计算密钥是可能的但我认为应该有更好的解决方案就像这样?

131137 - 131072 = 65 (A)

我是对的,还是这是首选的解决方案,还是我误解了一些Basic?

c# KeyDown事件多个键加ControlKey

你可以按Ctrl、Shift等键…使用KeyEventArgs对象中的属性

http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs_properties (v =应用程序). aspx

void Control_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Control && e.KeyCode == Keys.F4)
    {
        // Be happy
    }
}
131072 == (int) Keys.Control 

131137 (100000000001000001 binary) == (int) (Keys.Control | Keys.A)

你可以写一些类似的东西

  private void myControl_KeyDown(object sender, KeyEventArgs e) {
    if (e.KeyData == (Keys.A | Keys.Control)) {
      ...
    }