首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >多次附加事件处理程序

多次附加事件处理程序
EN

Stack Overflow用户
提问于 2013-10-11 17:41:50
回答 2查看 32.9K关注 0票数 16

我是C#的新手。我只想知道多次附加事件处理程序是否会导致意外的结果?

实际上,在我的应用程序中,我将一个事件处理程序附加到一个事件上,比如

代码语言:javascript
复制
cr.ListControlPart.Grid.CurrentCellActivated += new EventHandler(Grid_CurrentCellActivated); 

这行代码在代码中被多次调用。

EN

回答 2

Stack Overflow用户

发布于 2013-10-11 17:49:00

你自己试试吧:

代码语言:javascript
复制
static class Program
{
    static event EventHandler MyEvent;

    static void Main()
    {
        // registering event
        MyEvent += Program_MyEvent;
        MyEvent += Program_MyEvent;
        MyEvent += Program_MyEvent;
        MyEvent += Program_MyEvent;
        MyEvent += Program_MyEvent;

        // invoke event
        MyEvent(null, EventArgs.Empty);
        Console.ReadKey();
    }

    static void Program_MyEvent(object sender, EventArgs e)
    {
        Console.WriteLine("MyEvent fired");
    }
}

输出:

代码语言:javascript
复制
MyEvent fired
MyEvent fired
MyEvent fired
MyEvent fired
MyEvent fired
票数 28
EN

Stack Overflow用户

发布于 2013-10-11 17:50:49

您可以在添加之前通过取消订阅来阻止它。

代码语言:javascript
复制
Object.Event -= EventHandler(method);
Object.Event += EventHandler(method);

如果可以,可以通过总是在一个地方订阅事件来防止它,比如构造函数

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19314983

复制
相关文章

相似问题

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