【问题标题】:C# KeyDown Event multiple Keys plus ControlKeyC# KeyDown 事件多个键加 ControlKey
【发布时间】:2013-06-14 12:30:00
【问题描述】:

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

现在我已经修改了 KeyEventArgs 并找到了 Keys 枚举。 (一切都很完美,只需使用 | 和 & 组合并找到正确的键) 一个示例可以是 Shift + A,那么 KeyData 枚举的值是: Shift键 |班次 |一个

但是

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

如果我尝试使用 A ist 131137 和 B ist 131138 和 C ist 131139 等等,我已经认识到... 所以我认为可以计算出密钥,但我认为应该有更好的解决方案,然后像这样?

131137 - 131072 = 65(对于 A)

我是对的,还是这是首选的解决方案,还是我误解了一些基本原理?

【问题讨论】:

标签: c# controls keydown


【解决方案1】:

您可以使用 KeyEventArgs 对象中的属性来获取 Ctrl、Shift 等...

http://msdn.microsoft.com/en-us/library/system.windows.forms.keyeventargs_properties(v=vs.90).aspx

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

【讨论】:

  • 喜欢 // 开心点哈哈 :)
  • 如何捕捉 F4+S ?
【解决方案2】:
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)) {
      ...
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-05
    • 2015-09-05
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-11
    相关资源
    最近更新 更多