KeyDown KeyEventArgs不起作用

时间:2014-01-29 19:26:24

标签: c# keydown hotkeys registerhotkey global-hotkey

我正在尝试将HotKeys包含在我的程序中,但我不知道如何执行此代码:

    private void Form_KeyDown(object data, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Insert)
    {
        timer1.Stop();
    }
}

3 个答案:

答案 0 :(得分:1)

你绑定了那件事吗?听起来它没有接线。

public Form()
{
    this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form_KeyDown);
}

您可以以这种方式绑定事件,或者在Visual Studio的“属性”窗口中双击KeyDown事件。

如果您选择点击方式,则事件将绑定在Form.Designer.cs文件中。

完整的代码构造函数和方法如下所示:

public Form()
{
    this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.Form_KeyDown);
}

private void Form_KeyDown(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Insert)
    {
        timer1.Stop();
    }
}

答案 1 :(得分:1)

只需将该代码复制并粘贴到您的表单中(我发现此用法更容易)

protected override void OnKeyDown(KeyEventArgs e)
{
    if (e.KeyCode == Keys.Insert)
    {
        timer1.Stop();
    }
}

修改

BTW:不要忘记将true设置为表单的 KeyPreview 属性。

答案 2 :(得分:0)

根据我的评论:

我不确定插入键,但您正在寻找助记符。在您的表单上,使用“&”要快捷方式的字符前的字符。例如,在任何显示“打开”的按钮,菜单,标签等上,将文本更改为“& Open”,它将执行您想要的操作。

编辑:请记住,这会绑定Alt + yourCharacter组合键,而不仅仅是单键。如果您正在寻找特殊的密钥(插入,F1等......),您需要从其他答案中实现解决方案(我认为@ QtX的解决方案可以满足您的需求)