我对 Vb.Net 事件和处理程序感到满意。任何人都可以帮助我如何在 c# 中创建事件处理程序并引发事件。
问问题
31349 次
4 回答
12
只知道 C#,或者只知道 VB.Net 的开发人员可能不知道这是 VB.NET 和 C# 之间较大的区别之一。
我将无耻地复制这个对 VB 事件的精彩解释:VB 使用声明性语法来附加事件。Handles子句出现在将处理事件的代码上。在适当的时候,多个方法可以处理同一个事件,多个事件可以由同一个方法处理。Handles 子句的使用依赖于出现在基础变量(例如按钮)的声明中的WithEvents修饰符。您还可以使用AddHandler关键字附加属性处理程序,并使用 RemoveHandler 删除它们。例如
Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
Private Sub TextBox1_Leave(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles TextBox1.Leave
'Do Stuff '
End Sub
在 C# 中,您不能使用声明性语法。您使用 += ,它被重载以像 VB.Net AddHandler 一样工作。这是一个从tster 的答案中无耻窃取的示例:
public MyClass()
{
InitializeComponent();
textBox1.Leave += new EventHandler(testBox1_Leave);
}
void testBox1_Leave(object sender, EventArgs e)
{
//Do Stuff
}
于 2009-09-28T19:44:12.870 回答
7
在 C# 2 及更高版本中,您可以添加如下事件处理程序:
yourObject.Event += someMethodGroup;
其中 的签名someMethodGroup
与 的代表签名匹配yourObject.Event
。
在 C# 1 中,您需要显式创建一个事件处理程序,如下所示:
yourObject.Event += new EventHandler(someMethodGroup);
现在方法组、事件和EventHandler
必须匹配的签名。
于 2009-09-28T18:35:11.020 回答
3
public MyClass()
{
InitializeComponent();
textBox1.LostFocus += new EventHandler(testBox1_LostFocus);
}
void testBox1_LostFocus(object sender, EventArgs e)
{
// do stuff
}
于 2009-09-28T18:34:55.347 回答