【问题标题】:C# Windows Forms Applications Hotkey - KeyDown event not workingC# Windows 窗体应用程序热键 - KeyDown 事件不起作用
【发布时间】:2020-11-02 01:07:08
【问题描述】:

我阅读了很多关于为 Windows 窗体应用程序制作热键的问题,并尝试了很多人说它有效的代码,但对我来说,不知何故。

代码:

void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Control && e.KeyCode == Keys.S)   
        {
          timer1.Stop();
            e.SuppressKeyPress = true; 
        }
    }

【问题讨论】:

    标签: c# .net winforms hotkeys


    【解决方案1】:

    如果您想为您的表单创建全局热键管理器以供该表单中的所有控件使用,您需要覆盖捕获所有控件的所有键的Form.ProcessCmdKey() 方法,而不是使用仅在背景聚焦时有效,并且仅在 ActiveControlnull 时才会发生:

    protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
    {
      switch ( keyData )
      {
        case Keys.Control | Keys.S:
          timer1.Stop();
          return true;
      }
      return base.ProcessCmdKey(ref msg, keyData);
    }
    

    因此,您可以捕获所需的任何组合键并在处理后返回 true。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 2012-10-29
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多