WithEvents e Cláusula Handles
A instrução WithEvents e a cláusula Handles fornecem uma maneira declarativa de especificar os manipuladores de eventos.Um evento gerado por um objeto declarado com a palavra-chave WithEvents pode ser tratado por qualquer procedimento com uma instrução Handles para esse evento, conforme mostrado no exemplo o seguir:
' Declare a WithEvents variable.
Dim WithEvents EClass As New EventClass
' Call the method that raises the object's events.
Sub TestEvents()
EClass.RaiseEvents()
End Sub
' Declare an event handler that handles multiple events.
Sub EClass_EventHandler() Handles EClass.XEvent, EClass.YEvent
MsgBox("Received Event.")
End Sub
Class EventClass
Public Event XEvent()
Public Event YEvent()
' RaiseEvents raises both events.
Sub RaiseEvents()
RaiseEvent XEvent()
RaiseEvent YEvent()
End Sub
End Class
A instrução WithEvents e a cláusula Handles geralmente são a melhor opção para manipuladores de eventos pois a sintaxe declarativa usada torna mais fácil de codificar, ler e depurar a manipulação de eventos.No entanto, esteja ciente das seguintes limitações sobre o uso de variáveis WithEvents:
Não é possível usar uma variável WithEvents como um variável de objeto.Ou seja, você não pode declará-la como Object — você deve especificar o nome da classe quando você declarar a variável.
Como compartilhada eventos não são ligadas a instâncias de classe, não é possível usar WithEvents declarativamente manipular eventos compartilhados. Da mesma forma, você não pode usar WithEvents ou Handles para manipular eventos de um Structure.Em ambos os casos, você pode usar a instrução AddHandler para manipular esses eventos.
Não é possível criar matrizes de WithEvents variáveis.
WithEvents variáveis permitem a um único manipulador de eventos manipular um ou mais tipo de evento, ou um ou mais manipuladores de eventos para manipular o mesmo tipo de evento.