2010-05-28 117 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