2008-10-02 133 views
69

如何捕获在我的表单上的任意位置输入按键,并强制它触发提交按钮事件?Windows窗体 - 输入keypress激活提交按钮?

+6

那么,为什么你不按马特汉密尔顿答案的AcceptButton属性呢? – Mukus 2015-06-18 23:55:59

+0

使用'this.Form.DefaultButton = MyButton.UniqueID;' – 2016-03-03 13:38:13

回答

2

该表格有一个KeyPreview属性,您可以使用该属性来拦截按键。

154

如果将Form的AcceptButton属性设置为表单上的某个按钮,则默认情况下会获得该行为。

否则,在表单上将KeyPreview属性设置为True并处理其KeyDown事件。您可以检查Enter键并采取必要的措施。

+1

这是完美!谢谢马特。 :) – Bravo 2012-12-20 14:07:50

+5

并不要忘记关于处理退出按键的CancelButton – WholeLifeLearner 2014-10-16 14:51:59

0

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

20

您可以在窗体的属性中指定一个按钮作为“AcceptButton”,它将捕获窗体上的任何“Enter”按键并将它们传送到该控件。

this MSDN article并注意它概述了少数例外(多行文本框等)

8

如前所述,您的表单的AcceptButton属性设置为某个按钮,并设置的DialogResult属性为DialogResult.OK,以便调用者知道该对话是被接受还是被解雇。

5

您可以订阅文本框的KeyUp事件。

private void txtInput_KeyUp(object sender, KeyEventArgs e) 
{ 

    if(e.KeyCode == Keys.Enter) 
     DoSomething(); 

} 
12
private void textBox_KeyDown(object sender, KeyEventArgs e) { 
    if (e.KeyCode == Keys.Enter){ 
     button.PerformClick(); 
    } 
} 
0
if (e.KeyCode.ToString() == "Return") 
    { 
     //do something 
    } 
0

只需使用

this.Form.DefaultButton = MyButton.UniqueID; 

**把你的按钮ID到位 '为myButton' 的。