2010-05-28 116 views
4

我在WinForm上有一個TextBox,我想在每次有人按下該文本框內的某個鍵時執行一些代碼。我正在查看事件屬性菜單,並查看KeyDown事件,但不知道如何向其添加代碼。將事件添加到WinForms?

回答

12

您需要爲該事件添加事件處理程序。因此,在屬性菜單中,雙擊KeyDown事件旁邊的字段,Visual Studio將爲您創建一個事件處理程序。它看起來像這樣:

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    // enter your code here 
} 

您還可以自己訂閱事件,而無需使用「屬性」窗口。例如,在窗體的構造函數:

textBox1.KeyDown += HandleTextBoxKeyDownEvent; 

,然後實現事件處理程序:

private void HandleTextBoxKeyDownEvent(object sender, KeyEventArgs e) 
{ 
    // enter your code here 
} 
+0

我會添加這樣一個事實,即Visual Studio以一種非常好的方式爲您自動執行此操作。開始輸入「textBox1.KeyDown + =」,然後按兩次「Tab」鍵。 – karlipoppins 2010-05-28 13:41:22

0

您需要爲事件添加處理程序

雙擊文本框屬性窗口中的KeyPress事件,使Visual Studio在代碼文件中生成一個事件處理程序。
然後你可以把你想要的任何代碼放到事件處理函數中。您可以通過編寫e.KeyCode來檢查按下哪個鍵。

1

雙擊其旁邊的文本字段。

1

我假設你在Visual Studio中。一種方法是雙擊KeyDown事件右側的空文本框:VS將爲您生成代碼。

3

這些答案將有Visual Studio中生成事件,並將其綁定在Designer.cs文件幕後。

如果你想知道如何自己綁定事件,它看起來像這樣。

MyTextBox.KeyDown += new KeyEventHandler(MyKeyDownFunction) 

private function MyKeyDownFunction(object sender, KeyEventArgs e) { 
    // your code 
} 

如果這樣做,new KeyEventHandler()部分是可選的。您也可以使用lambda來避免樣板代碼。

MyTextBox.KeyDown += (s, e) => { 
    // s is the sender object, e is the args 
} 
+1

該lambda變體是光滑的。 – 2012-06-19 17:31:54