请单击以进行评分并提供反馈
MSDN
MSDN Library
事件
 引发事件

  开启低带宽视图
此页面仅适用于
Microsoft Visual Studio 2005/.NET Framework 2.0

同时提供下列产品的其他版本:
.NET Framework 开发人员指南
引发事件

事件功能是由三个互相联系的元素提供的:提供事件数据的类、事件委托和引发事件的类。.NET Framework 具有命名与事件相关的类和方法的约定。如果希望您的类引发一个名为 EventName 的事件,您需要以下元素:

  • 包含事件数据的类,名为 EventNameEventArgs。该类必须从 System.EventArgs 导出。

  • 事件的委托,名为 EventNameEventHandler

  • 引发事件的类。该类必须提供事件声明 (EventName) 和引发事件 (OnEventName) 的方法。

.NET Framework 类库或第三方类库中可能已经定义了事件数据类和事件委托类。在这种情况下,您就不需要定义这些类了。例如,如果您的事件不使用自定义数据,可以使用 System.EventArgs 作为事件数据并使用 System.EventHandler 作为委托。

使用 event 关键字在类中定义事件成员。当编译器在类中遇到 event 关键字时,它会创建一个私有成员,例如:

private EventNameHandler eh = null;

编译器还会创建两个公共方法,即 add_EventNameremove_EventName。这些方法是事件挂钩,它们允许委托与事件委托 eh 合并或从该事件委托中移除。这些详细信息对程序员是隐藏的。

Note注意

在除 C# 和 Visual Basic 2005 以外的其他语言中,编译器可能不自动生成与事件成员对应的代码,您可能需要显式地定义事件挂钩和私有委托字段。

定义事件实现后,您必须确定引发事件的时间。通过在定义事件的类或派生类中调用受保护的 OnEventName 方法来引发事件。OnEventName 方法通过调用委托,传入所有事件特定的数据来引发事件。事件的委托方法可以执行事件操作或处理事件特定的数据。

Note注意

受保护的 OnEventName 方法也允许派生类重写事件,而不必向其附加委托。派生类必须始终调用基类的 OnEventName 方法以确保注册的委托接收到事件。

如果希望处理另一个类中引发的事件,请向事件中添加委托方法。如果您不熟悉 .NET Framework 中事件的委托模型,请参见事件和委托

请参见

社区内容   什么是社区内容?
添加新内容 RSS  批注
Processing
© 2009 Microsoft Corporation 版权所有。 保留所有权利  |  商标  |  隐私权声明
Page view tracker