1.申请一个委托
delegate void xxxxxHandler(object sender,EventArgs e);
xxxxxHandler 当然可以是其他任意合法名字,用Handler后缀是好习惯,一看就知道这是一个委托。委托不一定要带参数。
2.定义一个event
event xxxxxHandler xxxxxEvent;
event可视作一个指针数组,里面保存着事件响应方法的指针。跟Handler一样,用Event作为后缀一看就知道这是个event。
3.event 触发点
必须是可执行代码内(而非变量定义部分),比如一个类的某个方法中,这叫订阅事件。
public class abc
{
public void OnxxxxxEvent()
{
xxxxxEvent.Invoke(参数1,参数2);
}
}
事件触发用其Invoke方法实现,Invoke遍历event这个指针数组,逐一执行添加到里面的方法。
事件被Invoke前,必须有方法加入,xxxxxEvent += xxx(object sender,EventArgs e)
否则其值是null而引发‘未将对象引用设置到对象的实例’的错误。