Handles Clause (Visual Basic)
Declares that a procedure handles a specified event.
Syntax
proceduredeclaration Handles eventlist
Parts
proceduredeclaration
The Sub
procedure declaration for the procedure that will handle the event.
eventlist
List of the events for proceduredeclaration
to handle, separated by commas. The events must be raised by either the base class for the current class, or by an object declared using the WithEvents
keyword.
Remarks
Use the Handles
keyword at the end of a procedure declaration to cause it to handle events raised by an object variable declared using the WithEvents
keyword. The Handles
keyword can also be used in a derived class to handle events from a base class.
The Handles
keyword and the AddHandler
statement both allow you to specify that particular procedures handle particular events, but there are differences. Use the Handles
keyword when defining a procedure to specify that it handles a particular event. The AddHandler
statement connects procedures to events at run time. For more information, see AddHandler Statement.
For custom events, the application invokes the event's AddHandler
accessor when it adds the procedure as an event handler. For more information on custom events, see Event Statement.
Example 1
Public Class ContainerClass
' Module or class level declaration.
WithEvents Obj As New Class1
Public Class Class1
' Declare an event.
Public Event Ev_Event()
Sub CauseSomeEvent()
' Raise an event.
RaiseEvent Ev_Event()
End Sub
End Class
Sub EventHandler() Handles Obj.Ev_Event
' Handle the event.
MsgBox("EventHandler caught event.")
End Sub
' Call the TestEvents procedure from an instance of the ContainerClass
' class to test the Ev_Event event and the event handler.
Public Sub TestEvents()
Obj.CauseSomeEvent()
End Sub
End Class
The following example demonstrates how a derived class can use the Handles
statement to handle an event from a base class.
Public Class BaseClass
' Declare an event.
Event Ev1()
End Class
Class DerivedClass
Inherits BaseClass
Sub TestEvents() Handles MyBase.Ev1
' Add code to handle this event.
End Sub
End Class
Example 2
The following example contains two button event handlers for a WPF Application project.
Private Sub Button1_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click
MessageBox.Show(sender.Name & " clicked")
End Sub
Private Sub Button2_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button2.Click
MessageBox.Show(sender.Name & " clicked")
End Sub
Example 3
The following example is equivalent to the previous example. The eventlist
in the Handles
clause contains the events for both buttons.
Private Sub Button_Click(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles Button1.Click, Button2.Click
MessageBox.Show(sender.Name & " clicked")
End Sub