Cláusula Handles (Visual Basic)
Declara se um procedimento manipula um evento especificado.
Sintaxe
proceduredeclaration Handles eventlist
Partes
proceduredeclaration
A declaração de procedimento Sub
para o procedimento que tratará o evento.
eventlist
Lista dos eventos para proceduredeclaration
tratar, separados por vírgulas. Os eventos devem ser gerados pela classe base da classe atual ou por um objeto declarado usando a palavra-chave WithEvents
.
Comentários
Use a palavra-chave Handles
no final de uma declaração de procedimento para fazer com que ela lide com eventos gerados por uma variável de objeto declarada usando a palavra-chave WithEvents
. A palavra-chave Handles
também pode ser usada em uma classe derivada para manipular eventos de uma classe base.
A palavra-chave Handles
e a instruçãoAddHandler
permitem que você especifique que procedimentos específicos manipulem eventos específicos, mas há diferenças. Use a palavra-chave Handles
ao definir um procedimento para especificar que ele manipula um evento específico. A instrução AddHandler
conecta procedimentos a eventos em tempo de execução. Para obter mais informações, confira a Instrução AddHandler.
Para eventos personalizados, o aplicativo invoca o acessador AddHandler
do evento quando adiciona o procedimento como um manipulador de eventos. Para obter mais informações sobre eventos personalizados, confira Instrução de evento.
Exemplo 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
O exemplo a seguir demonstra como uma classe derivada pode usar a instrução Handles
para manipular um evento de uma classe base.
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
Exemplo 2
O exemplo a seguir contém dois manipuladores de eventos de botão para um projeto do Aplicativo WPF.
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
Exemplo 3
O exemplo a seguir é equivalente ao exemplo anterior. A eventlist
na cláusula Handles
contém os eventos para ambos os botões.
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