事件的功能是由如下三个关联元素实现的。
1)提供事件数据的类:即EventNameEventArgs类,此类从System.EventArgs中导出。
2)事件委托:即EventNameEventHandler。
3)引发事件的类:此类提供事件声明和引发事件的方法。
在现实应用中,通常调用委托来引发事件,并传递与事件相关的参数。委托将调用已经添加到该事件的所有处理方法,如果没有事件处理方法,则该事件为空。
如果要使用在另外一个类中定义的事件,则必须定义和注册一个事件的处理方法。每个事件都可以分配多个处理程序来接收事件。这样事件将自动调用每个接收器,无论接收器有几个,只需调用一次该事件即可引发事件。
在C#类中实现事件处理的流程如下。
1)定义提供事件数据的类。对EventNameEventArgs类进行命名处理,从System.EventArgs派生后添加所有事件的成员。
2)声明事件的委托,即对委托EventNameEventHandler进行命名处理。(www.xing528.com)
3)使用关键字event来定义类中名为EventName的公共事件成员,将事件的成员设置为委托类型。
4)在引发事件的类中定义一个受保护的方法。一般是protected类型的virtual方法。
5)在引发事件的类中确定引发该事件的事件。即调用OnEventName来引发该事件,然后使用EventNameEventArgs传入事件特定的数据。
如果是在另外一个类中实现事件处理,则具体的实现流程如下。
1)在使用事件的类中定义一个与事件委托有相同签名的事件处理方法。
2)使用对该事件处理方法的一个引用创建委托的实例,当调用此委托实例时会及时自动调用该事件的处理方法。
3)使用“+=”操作符将该委托实例添加到事件。
4)如果不需要事件处理,则使用“-=”操作符将该委托从事件队列中删除。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。