C#按键关闭事件多个按键加上控制键

C#按键关闭事件多个按键加上控制键,c#,controls,keydown,C#,Controls,Keydown,我想识别我的控件的击键。为此,我使用KeyDown事件。我想要检测的击键类型类似于CTRL+A或CTRL+C等等。 (多个键的组合) 现在我已经修改了KeyEventArgs并找到了keysenum。 (一切都很完美,只需使用|和&组合并找到正确的键即可) 例如Shift+A,则KeyData枚举的值为: ShiftKey | Shift | A 但是 当我试着按下控制键(所以控制+A)时,我得到了131137作为响应? 我不知道为什么我没有得到像ControlKey | Control | A

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

现在我已经修改了KeyEventArgs并找到了keysenum。 (一切都很完美,只需使用|和&组合并找到正确的键即可) 例如Shift+A,则KeyData枚举的值为: ShiftKey | Shift | A

但是

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

我已经认识到,如果我尝试使用ist 131137、B ist 131138和C ist 131139等等。。。 所以我认为可以计算出关键点,但我认为应该有更好的解决方案,就像这样

131137-131072=65(对于A)


我说的对吗,或者这是前面提到的解决方案,还是我误解了一些基本的问题?

您可以使用Ctrl、Shift等键。。。在KeyEventArgs对象中使用属性

131072==(int)键。控件

所以

131137(10000000001000001二进制)=(int)(Keys.Control | Keys.A)

你可以放一些这样的东西

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

这个问题可能会有一些帮助,比如//be happy haha:)我如何捕捉F4+S?
  private void myControl_KeyDown(object sender, KeyEventArgs e) {
    if (e.KeyData == (Keys.A | Keys.Control)) {
      ...
    }