首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用addHandler引发事件

如何使用addHandler引发事件
EN

Stack Overflow用户
提问于 2009-09-28 18:25:01
回答 4查看 31.3K关注 0票数 9

我对Vb.Net事件和处理程序很熟悉。有谁能帮我在c#中创建事件处理程序,并引发事件吗?

EN

回答 4

Stack Overflow用户

发布于 2009-09-28 19:44:13

只知道C#或VB.Net的开发人员可能不知道这是VB.NET和C#之间最大的区别之一。

我将shamelesssly copy这个关于VB事件的很好的解释: VB使用声明性语法来附加事件。Handles子句出现在将处理该事件的代码上。在适当的情况下,多个方法可以处理相同的事件,并且相同的方法可以处理多个事件。Handles子句的使用依赖于底层变量声明中出现的WithEvents修饰符。还可以使用AddHandler关键字附加属性处理程序,并使用RemoveHandler删除它们。例如

代码语言:javascript
复制
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窃取的例子

代码语言:javascript
复制
public MyClass()
{
    InitializeComponent();
    textBox1.Leave += new EventHandler(testBox1_Leave);
}

void testBox1_Leave(object sender, EventArgs e)
{
  //Do Stuff
}
票数 12
EN

Stack Overflow用户

发布于 2009-09-28 18:35:11

在C# 2和更高版本中,您可以像这样添加事件处理程序:

代码语言:javascript
复制
yourObject.Event += someMethodGroup;

其中someMethodGroup的签名与yourObject.Event的委托签名匹配。

在C# 1中,您需要显式创建一个事件处理程序,如下所示:

代码语言:javascript
复制
yourObject.Event += new EventHandler(someMethodGroup);

现在,方法组、事件和EventHandler的签名必须匹配。

票数 7
EN

Stack Overflow用户

发布于 2009-09-28 18:34:55

代码语言:javascript
复制
    public MyClass()
    {
        InitializeComponent();
        textBox1.LostFocus += new EventHandler(testBox1_LostFocus);
    }

    void testBox1_LostFocus(object sender, EventArgs e)
    {
        // do stuff
    }
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1488573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档