如何创建自定义事件处理类,如EventArgs

时间:2010-11-23 09:42:53

标签: c#

如何编写自定义事件处理类,如果有人知道如何创建它,或者你知道任何关于此的好文章那么请帮助我。

先谢谢

3 个答案:

答案 0 :(得分:19)

我不完全确定你的意思,但如果你在谈论一个EventArgs派生类:

public class MyEventArgs : EventArgs
{
    private string m_Data;
    public MyEventArgs(string _myData)
    {
        m_Data = _myData;
    } // eo ctor

    public string Data {get{return m_Data} }
} // eo class MyEventArgs


public delegate void MyEventDelegate(MyEventArgs _args);

public class MySource
{
    public void SomeFunction(string _data)
    {
        // raise event
        if(OnMyEvent != null) // might not have handlers!
            OnMyEvent(new MyEventArgs(_data));
    } // eo SomeFunction
    public event MyEventDelegate OnMyEvent;
} // eo class mySource

希望这有帮助。

答案 1 :(得分:15)

我相信你所指的是一个事件的新EventHandler,而不是EventArgs。有两种简单的方法可以做到这一点。首先,您可以创建一个使用通用EventHandler的事件,这是使用新EventArgs类的最快捷,最简单的方法:

event EventHandler<MyEventArgs> sampleEvent;

第二种方式几乎一样简单,从语法的角度来看可能更简洁,就是创建一个新的委托,它具有你想要的事件参数,你可以立即使用:

delegate void MyEventHandler(object sender, MyEventArgs e);
event MyEventHandler sampleEvent;

第二种方法将允许您稍后重用处理程序。

答案 2 :(得分:1)

你宣布这样的事件:

public delegate void MyEventDelegate(...);
public static event MyEventDelegate MyEvent = delegate { };

然后,举起活动:

MyEvent(...);

事件初始化为匿名委托,以便在每次要引发事件时删除检查null的要求。