如何在按钮中捕获HotKeys(加速器)消息

时间:2011-12-21 13:11:27

标签: .net winforms button

我正在实现一个继承自Button的自定义System.Windows.Forms.Button类,我会对按钮进行自定义绘制,包括按钮文本。我想为我的按钮支持加速键(热键)。

小解释:在标准按钮中,按下ALT键时,加速器字符带下划线:

  button.Text = "&Capture screen";

当您在应用程序中按 ALT键时,该按钮会突出显示“C”字符。

因此,当我绘制按钮文本时,我需要知道加速器下划线是否处于活动状态,以便绘制带下划线的文本。

  • 我如何订阅接收加速器消息?
  • 是活动吗?
  • 是WND_PROC消息吗?
  • 是否有托管代码来获取它?

提前致谢。

1 个答案:

答案 0 :(得分:1)

如果要检测是否在按钮的Paint事件处理程序中按下了Alt键,则检查表单的ModifierKeys属性:

    private void button1_Paint(object sender, PaintEventArgs e)
    {
        if (ModifierKeys == Keys.Alt)
            button1.Text = "Alt Pressed - " + button1.Text;
    }