我对Vb.Net事件和处理程序很熟悉。有谁能帮我在c#中创建事件处理程序,并引发事件吗?
发布于 2009-09-28 19:44:13
只知道C#或VB.Net的开发人员可能不知道这是VB.NET和C#之间最大的区别之一。
我将shamelesssly copy这个关于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's answer窃取的例子
public MyClass()
{
InitializeComponent();
textBox1.Leave += new EventHandler(testBox1_Leave);
}
void testBox1_Leave(object sender, EventArgs e)
{
//Do Stuff
}发布于 2009-09-28 18:35:11
在C# 2和更高版本中,您可以像这样添加事件处理程序:
yourObject.Event += someMethodGroup;其中someMethodGroup的签名与yourObject.Event的委托签名匹配。
在C# 1中,您需要显式创建一个事件处理程序,如下所示:
yourObject.Event += new EventHandler(someMethodGroup);现在,方法组、事件和EventHandler的签名必须匹配。
发布于 2009-09-28 18:34:55
public MyClass()
{
InitializeComponent();
textBox1.LostFocus += new EventHandler(testBox1_LostFocus);
}
void testBox1_LostFocus(object sender, EventArgs e)
{
// do stuff
}https://stackoverflow.com/questions/1488573
复制相似问题