C#中的事件,我觉得和MFC的消息作用在某些方面是差不多的。这个项目中用到的需求是两个类之间的数据交互,首先肯定是分为一个触发事件的类,一个处理事件的类。
1)首先需要在所有类的外部为事件定义一个公共访问类型的代理,该代理为多重代理,所以代理定义方法标识的返回为void类型。一般我们这么定义:
<span style="font-size:14px;">public void EventDelegate(object sender,EventArgs e);</span>
多重代理的意思,可以理解为这个代理有多重方法。
2)在事件触发类中,使用event关键字与之前声明的代理共同定义一个公共访问类型的事件。
<span style="font-size:14px;">public event EventDelegate MyEvent;</span>
3)在事件处理类中,定义一个事件处理方法,这个方法的参数和代理的一致
<span style="font-size:14px;">public void OnMyEvent(object sender,EventArgs e)</span>
<span style="font-size:14px;">{//处理的方法</span><span style="font-size:14px;">}</span>
4)在事件触发类中的方法中,触发事件。
MyEvent(this,null);
5)在事件处理类中,实例化事件触发类,并且将当前类中定义的事件处理方法和事件绑定在一起
EventClass eventObj=new EventClass();
eventObj.MyEvent+=new EventDelegate(OnMyEvent);