Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você 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 é reconhecido por algum componente do programa e para o 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, existem dois aspectos a serem considerados ao trabalhar com eventos:
- Publicação de eventos — classes declaram eventos e os geram quando algo interessante acontece usando a Instrução RaiseEvent. Isso é o que realmente invoca (chama) os manipuladores de eventos.
-
Assinatura de eventos — As assinaturas de eventos são feitas identificando procedimentos como tratadores para eventos específicos. Você pode fazer isso com uma cláusula
Handlese uma variávelWithEventsou com uma Instrução AddHandler.
Um manipulador de eventos no Visual Basic é um procedimento Sub. Seu código não o chama diretamente como outros Sub procedimentos. Em vez disso, os editores de eventos invocam o procedimento quando o evento ocorre porque o procedimento está subscrito ao 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 IDE (ambiente de desenvolvimento integrado). A instrução AddHandler é adequada para inscrever-se em eventos dinamicamente em tempo de 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 desassociar um manipulador de um evento. Para obter mais informações, consulte Eventos.
Assinar um evento usando Handles e WithEvents
Verifique se o evento foi declarado com uma Instrução de Evento.
Declare uma variável de objeto no nível do módulo ou da classe, usando a
WithEventspalavra-chave. AAscláusula dessa variável deve especificar a classe que gera o evento.Na declaração do procedimento de tratamento
Subde eventos, adicione umaHandlescláusula que especifica 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çãoSubde eventos 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
Assinar um evento usando AddHandler
Verifique se o evento foi declarado com uma instrução
Event.Execute uma instrução AddHandler para conectar dinamicamente o procedimento de manipulação
Subde eventos 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 temporizador 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 desassociar um manipulador de eventos de um evento executando a instrução RemoveHandler.