我想检测表单上的按键。假设我想在按下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()
中的行吗?
答案 0 :(得分:2)
如果您想处理按键事件而不管当前具有焦点的控件,那么您应该考虑覆盖Control.ProcessCmdKey()
方法。
以下是一个示例:How do I capture Keys.F1 regardless of the focused control on a form?
答案 1 :(得分:1)
答案 2 :(得分:1)
你肯定没有空白表格,但表格中包含一些控件,如文本框等......
如果按某个键,则会针对当前具有焦点的控件引发此事件。例如,您KeyUp
的{{1}}事件就会被提出,但不会出现在您的表单中。
要确保在针对焦点控件引发事件之前在TextBox
中引发事件,请将Form
的{{1}}属性设置为KeyPreview
:
Form
或者如Sadiq所示,将其设置在UI设计器中。