事件是某个动作或事件(如鼠标单击或信用额度超限),被程序组件识别,并且可以编写代码来响应。 事件处理程序是你为响应事件而编写的代码。
Visual Basic 中的事件处理程序是一个 Sub
过程。 但该过程的调用方式与其他 Sub
过程的常规调用方式不同。 可将该过程标识为事件的处理程序。 可以使用 Handles
子句和 WithEvents
变量,或者使用 AddHandler 语句来实现此操作。
Handles
使用子句是在 Visual Basic 中声明事件处理程序的默认方法。 这是在集成开发环境(IDE)中编程时设计器编写事件处理程序的方式。 该 AddHandler
语句适用于在运行时动态引发事件。
事件发生时,Visual Basic 会自动调用事件处理程序过程。 任何有权访问事件的代码都可能导致它通过执行 RaiseEvent 语句来发生。
可以将多个事件处理程序与同一事件相关联。 在某些情况下,可以将处理程序与事件取消关联。 有关详细信息,请参阅 事件。
使用 Handles 和 WithEvents 调用事件处理程序
确保事件是使用 事件语句声明的。
使用
WithEvents
关键字在模块或类级别声明对象变量。 此变量的As
子句必须指定引发事件的类。在事件处理
Sub
过程的声明中,添加一个Handles
指定WithEvents
变量和事件名称的子句。事件发生时,Visual Basic 会自动调用
Sub
该过程。 代码可以使用RaiseEvent
语句使事件发生。以下示例定义一个事件和一个
WithEvents
引用引发事件的类的变量。 事件处理Sub
过程使用子Handles
句来指定它处理的类和事件。Public Class RaisesEvent Public Event SomethingHappened() Dim WithEvents happenObj As New RaisesEvent Public Sub ProcessHappen() Handles happenObj.SomethingHappened ' Insert code to handle somethingHappened event. End Sub End Class
使用 AddHandler 调用事件处理程序
请确保使用
Event
语句声明事件。执行 AddHandler 语句 ,以动态连接事件处理
Sub
过程与事件。事件发生时,Visual Basic 会自动调用
Sub
该过程。 代码可以使用RaiseEvent
语句使事件发生。以下示例使用构造函数中的 AddHandler 语句 将
OnFormClosing
过程关联为事件处理程序 FormClosing。Sub New() InitializeComponent() AddHandler Me.FormClosing, AddressOf OnFormClosing End Sub Private Sub OnFormClosing(sender As Object, e As FormClosingEventArgs) ' Insert code to deal with impending closure of this form. End Sub
可以通过执行 RemoveHandler 语句将事件处理程序与事件解除关联。