Windows Forms - 按下回车键激活提交按钮?

111

我该如何在表单的任何位置捕获回车键按下事件并强制触发提交按钮事件?


11
为什么您不按下Matt Hamilton答案的AcceptButton属性呢? - Mukus
1
使用“this.Form.DefaultButton = MyButton.UniqueID;” - Bino
9个回答

212
如果您将FormAcceptButton属性设置为Form上的一个Button,则默认情况下会获得该行为。
否则,将FormKeyPreview属性设置为true并处理其KeyDown事件。您可以检查Enter键并执行必要的操作。

9
请勿忘记使用CancelButton来处理按下"Escape"键的情况。 - WholeLifeLearner
1
太棒了!我需要更好地了解我的框架 ;) - Jack
如果你有一个名为submitButton的按钮,那么你需要将this.AcceptButton = submitButton放入你的窗体构造函数中。 - undefined
另外:你可以使用相同的想法来处理逃脱键,this.CancelButton = myCancelButton - undefined

32
private void textBox_KeyDown(object sender, KeyEventArgs e) 
{
    if (e.KeyCode == Keys.Enter)
        button.PerformClick();
}

25

感谢提供链接,那些异常一直在阻碍我。 - ubiquibacon
这个链接似乎已经失效了。 - JAD

11

如前所述,将表单的AcceptButton属性设置为其中一个按钮,并将该按钮的DialogResult属性设置为DialogResult.OK,以便调用者知道对话框是否被接受或关闭。


9

你可以订阅TextBoxKeyUp事件。

private void txtInput_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.Enter)
       DoSomething();
}

1
正是我所需要的。我的按钮对话框结果设置为“确定”,不想编写不必要的代码让回车键起作用! - Kristjan1215

2
该窗体具有一个KeyPreview属性,您可以使用它来拦截按键。

2

将您的窗体上的KeyPreview属性设置为True,然后使用窗体级别的KeyPress事件来检测Enter键。在检测到后,调用您为“提交”按钮编写的任何代码。


1

简单使用

this.Form.DefaultButton = MyButton.UniqueID;  

将你的按钮ID放在'MyButton'的位置。

0
  if (e.KeyCode.ToString() == "Return")
  { 
      //do something
  }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接