如何编写自定义事件处理类,如果有人知道如何创建它,或者你知道任何关于此的好文章那么请帮助我。
先谢谢
答案 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的要求。