2008-10-02 59 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' 的。