检测表格上的按键

时间:2016-07-20 11:16:55

标签: c#

我想检测表单上的按键。假设我想在按下F1键时显示消息。

我添加了与KeyUp

相关的Form1事件的代码
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.F1)
    {
        MessageBox.Show("Key Pressed ");
    }
}

事实是,紧迫的F1没有做任何事情。一点也不。有没有人知道为什么这不起作用?

解决方案

我必须将Form1 KeyPreview属性更改为“true”,并从this.Controls.Add(this.webControl1);

中的InitializeComponent()删除Form1.Designer.cs

有人知道如何解决我的问题而不删除InitializeComponent()中的行吗?

3 个答案:

答案 0 :(得分:2)

如果您想处理按键事件而不管当前具有焦点的控件,那么您应该考虑覆盖Control.ProcessCmdKey()方法。

以下是一个示例:How do I capture Keys.F1 regardless of the focused control on a form?

答案 1 :(得分:1)

确保您的form将KeyPreview属性设置为true。

  

Form.KeyPreview Property

     

获取或设置一个值,该值指示表单是否将接收密钥   将事件传递给具有焦点的控件之前的事件。

enter image description here

答案 2 :(得分:1)

你肯定没有空白表格,但表格中包含一些控件,如文本框等......

如果按某个键,则会针对当前具有焦点的控件引发此事件。例如,您KeyUp的{​​{1}}事件就会被提出,但不会出现在您的表单中。

要确保在针对焦点控件引发事件之前在TextBox中引发事件,请将Form的{​​{1}}属性设置为KeyPreview

Form

或者如Sadiq所示,将其设置在UI设计器中。