How to call an event handler in Visual Basic
An event is an action or occurrence — such as a mouse click or a credit limit exceeded — that is recognized by some program component, and for which you can write code to respond. An event handler is the code you write to respond to an event.
An event handler in Visual Basic is a Sub
procedure. However, you do not normally call it the same way as other Sub
procedures. Instead, you identify the procedure as a handler for the event. You can do this either with a Handles
clause and a WithEvents
variable, or with an AddHandler Statement. Using a Handles
clause is the default way to declare an event handler in Visual Basic. This is the way the event handlers are written by the designers when you program in the integrated development environment (IDE). The AddHandler
statement is suitable for raising events dynamically at run time.
When the event occurs, Visual Basic automatically calls the event handler procedure. Any code that has access to the event can cause it to occur by executing a RaiseEvent Statement.
You can associate more than one event handler with the same event. In some cases you can dissociate a handler from an event. For more information, see Events.
Call an event handler using Handles and WithEvents
Make sure the event is declared with an Event Statement.
Declare an object variable at module or class level, using the
WithEvents
keyword. TheAs
clause for this variable must specify the class that raises the event.In the declaration of the event-handling
Sub
procedure, add aHandles
clause that specifies theWithEvents
variable and the event name.When the event occurs, Visual Basic automatically calls the
Sub
procedure. Your code can use aRaiseEvent
statement to make the event occur.The following example defines an event and a
WithEvents
variable that refers to the class that raises the event. The event-handlingSub
procedure uses aHandles
clause to specify the class and event it 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
Call an event handler using AddHandler
Make sure the event is declared with an
Event
statement.Execute an AddHandler statement to dynamically connect the event-handling
Sub
procedure with the event.When the event occurs, Visual Basic automatically calls the
Sub
procedure. Your code can use aRaiseEvent
statement to make the event occur.The following example uses the AddHandler statement in the constructor to associate the
OnFormClosing
procedure as an event handler for 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
You can dissociate an event handler from an event by executing the RemoveHandler statement.