C# KeyDown事件多个按键加控制键

6
我想要在我的控制台中识别按键。为此,我使用KeyDown事件。我想要检测的按键是类似CTRL + A或CTRL + C等多个按键的组合。
现在,我已经查看了KeyEventArgs并找到了Keys枚举。(一切都完美,只需使用|和&结合并找到正确的按键) 一个例子可以是Shift + A,那么KeyData枚举的值是:ShiftKey | Shift | A
但是当我尝试按下Control键(例如Ctrl+A),我得到的响应是131137?我不确定为什么我没有得到ControlKey | Control | A这样的响应。
我已经发现如果我尝试按A,则得到131137;按B则得到131138;按C则得到131139等等...所以我认为可以计算出该按键,但是我认为应该有比这更好的方法吧?
例如:
131137 - 131072 = 65 (用于A)
我是正确的吗?这是首选解决方案还是我误解了一些基础知识?

这个问题可能会有一些帮助 https://dev59.com/kHRC5IYBdhLWcg3wJNcN - unlimit
2个回答

9

喜欢这个//开心哈哈 :) - coloboxp
我该如何捕获 F4+S? - Suhrob Samiev

3
131072 == (int) Keys.Control 

so

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

而且您可以放置类似于这样的内容

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接