Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um evento é uma ação ou ocorrência — como um clique do mouse ou um limite de crédito excedido — que é reconhecida por algum componente do programa e para a qual você pode escrever código para responder. Um manipulador de eventos é o código que você escreve para responder a um evento.
No Visual Basic, há dois lados para trabalhar com eventos:
- Publicação de eventos — As classes declaram eventos e os acionam quando algo interessante acontece usando a Instrução RaiseEvent. Isso é o que realmente invoca (chama) os manipuladores de eventos.
-
Assinatura de eventos — Assinam-se eventos identificando-se procedimentos como manipuladores para eventos específicos. Você pode fazer isso com uma
Handlescláusula e umaWithEventsvariável ou com uma declaração AddHandler.
Um manipulador de eventos no Visual Basic é um Sub procedimento. O seu código não o invoca diretamente como outros procedimentos Sub. Em vez disso, os editores de eventos invocam o procedimento quando o evento é gerado porque o procedimento está inscrito no evento.
Usar uma Handles cláusula é a maneira padrão de assinar eventos no Visual Basic. É assim que os manipuladores de eventos são escritos pelos designers quando você programa no ambiente de desenvolvimento integrado (IDE). A instrução AddHandler é adequada para assinar eventos dinamicamente em execução.
Quando o evento ocorre, o Visual Basic chama automaticamente o procedimento do manipulador de eventos. Qualquer código que tenha acesso ao evento pode fazer com que ele ocorra executando uma instrução RaiseEvent.
Você pode associar mais de um manipulador de eventos ao mesmo evento. Em alguns casos, você pode dissociar um manipulador de um evento. Para obter mais informações, consulte Eventos.
Subscrever um evento utilizando Handles e WithEvents
Certifique-se de que o evento é declarado com uma declaração de evento.
Declare uma variável de objeto no nível do módulo ou da classe, usando a
WithEventspalavra-chave. AAscláusula para essa variável deve especificar a classe que gera o evento.Na declaração do procedimento de manipulação
Subde eventos, adicione umaHandlescláusula que especifique aWithEventsvariável e o nome do evento.Quando o evento ocorre, o Visual Basic chama automaticamente o
Subprocedimento. Seu código pode usar umaRaiseEventinstrução para gerar o evento e invocar todos os manipuladores inscritos.O exemplo a seguir define um evento e uma
WithEventsvariável que se refere à classe que gera o evento. O procedimento de manipulação deSubeventos usa umaHandlescláusula para especificar a classe e o evento que ele manipula.' Example showing event handling with Handles and WithEvents Public Class EventPublisher Public Event SomethingHappened() Public Sub CauseEvent() ' Raise the event when something interesting happens RaiseEvent SomethingHappened() End Sub End Class Public Class EventSubscriber ' Declare a WithEvents variable Dim WithEvents eventObj As New EventPublisher ' Handle the event using Handles clause Public Sub ProcessHappen() Handles eventObj.SomethingHappened ' Insert code to handle somethingHappened event. Console.WriteLine("Event handled using Handles clause!") End Sub Public Sub TriggerEvent() eventObj.CauseEvent() End Sub End Class
Inscrever-se em um evento usando AddHandler
Certifique-se de que o evento é declarado com a instrução
Event.Execute uma instrução AddHandler para conectar dinamicamente o procedimento de manipulação de
Subeventos com o evento.Quando o evento ocorre, o Visual Basic chama automaticamente o
Subprocedimento. Seu código pode usar umaRaiseEventinstrução para gerar o evento e invocar todos os manipuladores inscritos.O exemplo a seguir usa a instrução AddHandler no construtor para associar o
OnTimerElapsedprocedimento como um manipulador de eventos para um evento de timer personalizado.' Example showing event handling with AddHandler Public Class Timer Public Event TimerElapsed(ByVal message As String) Public Sub Start() ' Simulate timer elapsed RaiseEvent TimerElapsed("Timer has elapsed!") End Sub End Class Public Class Application Private appTimer As New Timer() Sub New() ' Use AddHandler to dynamically associate event handler AddHandler appTimer.TimerElapsed, AddressOf OnTimerElapsed End Sub Private Sub OnTimerElapsed(ByVal message As String) ' Insert code to handle timer elapsed event Console.WriteLine($"Handling timer event: {message}") End Sub Public Sub StartTimer() appTimer.Start() End Sub End ClassVocê pode dissociar um manipulador de eventos de um evento executando a instrução RemoveHandler.