【问题标题】:Capture combination key event in a Windows Forms application在 Windows 窗体应用程序中捕获组合键事件
【发布时间】:2019-12-14 19:09:18
【问题描述】:

当用户按下 Shift + UP 键时,我希望我的表单通过调用一个消息框来响应。

如何在 Windows 窗体中执行此操作?

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    处理KeyDown 事件并有类似的东西:

    if (e.Modifiers == Keys.Shift && e.KeyCode == Keys.Up)
    {
        MessageBox.Show("My message");
    }
    

    事件处理程序必须在主窗体上,您需要将KeyPreview 属性设置为true。这可以通过属性对话框在设计模式下完成。

    【讨论】:

    • 不要认为它有效。我尝试了很多次,但 MessageBox 始终没有出现
    • 它确实适用于表单的keydown 事件。对不起。我将上面的代码放在表单中托管的控件的keydown 事件中,这就是它不起作用的原因
    • 事件正在触发,但条件总是变为假。
    【解决方案2】:

    如果您想使用多个修饰符,KeyEventArgs 还具有布尔值来指示是否按下了 CTRL、ALT 或 SHIFT。

    例子:

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control && e.Alt && e.Shift && e.KeyCode == Keys.F12)
            MessageBox.Show("My message");
    }
    

    在此示例中,如果同时按下 CTRL、ALT、SHIFT 和 F12,则会显示消息框。

    【讨论】:

      【解决方案3】:

      处理多个修饰键(在 KeyDown 事件中)

       if (e.Control && e.Shift)
                  {
                      if (e.KeyCode == Keys.F1)
                      {
                          // Your code goes here
      
                      }
                  }
      

      【讨论】:

        猜你喜欢
        • 2011-09-11
        • 1970-01-01
        • 2012-01-19
        • 1970-01-01
        • 2014-04-28
        • 2020-11-02
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多