以前都是用写好的事件 双击就可以用
现在要自定义事件,但是没有理解里面的原理,只是把步骤背下来了,我不想这样求高手给我详细解释下
我知道首先是定义了一个事件public class clcikeventargs:event
然后一个委托 public Delegate void clcikevenhanlder(object sendr,clcikeventargs e)
然后 public event clcikevenhanlder click;
然后触发Onclick
然后再this.Onclick = new clcikeventargs(e)
然后是注册+=
然后实现+=new 出来里面那个方法
我就是这样的
完全没有理解到
请高手详细说明下
对于自定义事件,简单来说:
1,定义一个类成员(这个成员是一个事件)
class YourClass
{
public event EventHandler<EventArgs> YourEvent;
}
也就是定义一个委托类型的成员,这个成员(委托)是一个函数指针。
2,在你需要激发事件的时候,调用这个函数指针
this.YourEvent(new EventArgs());
可以了.....都在这里了 :)
对于事件的使用者,
1,只需要订阅(subscribe)这个事件
YourClass cls = new YourClass();
cls.YourEvent += EventHandler<EventArgs>(YourHandlerFunction)
2,当特定事件发生时,事件源你的YourClass就是通过委托(其实就是指针)调用这个YourHandlerFunction
public void YourHandlerFunction(EventArgs e)
{
//客户代码事件处理函数
}
声明委托(用来储存方法),再声明事件(用来来管理委托),然后再此类触发位置用事件来调用相应委托存储的方法。在调用方添加方法到这个类事件列表中,填充这个方法。
public delegate void ErrorDelegate(object sender, Exception ex);
public event ErrorDelegate ErrorEvent;
void OnError(object sender, Exception ex)
{
if (ErrorEvent != null)
ErrorEvent(sender, ex);
}
此类中调用 OnError(this, ex);