Como: Escrever manipuladores evento
O modo como você constrói um manipulador de eventos depende de como você deseja associá-lo com eventos.A maneira padrão para criar um manipulador de eventos é usar o Handles palavra-chave com o WithEvents palavra-chave. Visual Basic Fornece uma maneira segunda para manipular eventos: the AddHandler demonstrativo. AddHandler e RemoveHandler permitem que você dinamicamente iniciar e interromper a manipulação de eventos para um evento específico. Você pode usar qualquer uma das abordagens, mas não deve usar ambas WithEvents e AddHandler com o mesmo evento.
Manipulando Eventos usando WithEvents
A palavra chave WithEvents permite criar variáveis de classe ou objeto de nivel módulo que podem ser usadas com a cláusula Handles em manipuladores de eventos.
Para manipular eventos usando WithEvents e a cláusula Handles
Crie uma classe simples que contém um evento
Class Class1 Public Event AnEvent(ByVal EventNumber As Integer) End Class
Na classe ou módulo que manipulará o evento, use a palavra chave WithEvents para declarar uma variável objeto para a fonte de seus eventos, como no exemplo seguinte:
Public WithEvents ClassInst As Class1
No Editor e Código, escolha a variável WithEvents que você acabou de declarar através da lista Nome da Classe na esquerda.
Escolha o evento que deve ser manipulado da lista Nome de Método na direita.O Editor de Código cria um procedimento manipulador de eventos vazio com uma cláusula Handles.
Observação: Esse passo é opcional.Você pode criar o procedimento de manipulador de eventos manualmente desde que o procedimento que você cria uma sub-rotina, possui a lista de argumento correta para coincidir com o evento que está sendo tratado e tem um Handles cláusula que especifica o evento sendo manipulado.
Adicione o código manipulador de eventos para o procedimento manipulador de eventos usando os argumentos fornecidos.O código a seguir é um exemplo:
Public Sub ClassInst_AnEvent(ByVal EventNumber As Integer) _ Handles ClassInst.AnEvent MsgBox("Received event number: " & CStr(EventNumber)) End Sub
Manipulando Eventos usando AddHandler
Você pode usar a declaração AddHandler para dinamicamente conectar eventos com procedimentos manipuladores de eventos.
Para manipular eventos usando AddHandkler
Crie uma sub-rotina para lidar com o evento, como no seguinte exemplo:
Public Sub EHandler(ByVal EventNumber As Integer) MsgBox("Received event number " & CStr(EventNumber)) End Sub
Declare uma variável objeto da classe que é a fonte dos eventos que você deseja manipular.Diferentemente da variável WithEvents, isso pode ser uma variável local num procedimento.Por exemplo:
Public Sub TestAddHandler() Dim CI As New Class1 End Sub
Usando a declaração AddHandlerpara especificar o nome do criador do evento, e a declaração AddressOf para fornecer o nome de seu manipulador de evento.Por exemplo, adicione o seguinte código ao final da sub-rotina TestAddHandler:
AddHandler CI.AnEvent, AddressOf EHandler
Qualquer procedimento pode servir como um manipulador de eventos desde que ele suporte os argumentos corretos para o eventos sendo manipulados.
Usando RemoveHandler para parar de Manipular Eventos
Você pode usar a declaração RemoveHandler para dinamicamente desconectar eventos dos procedimentos manipuladores de eventos.
Para parar manipulação de eventos usando RemoveHandler
Use a declaração RemoveHandler para especificar o nome do criador do evento e a declaração AddressOf para fornecer o nome do manipulador de evento.A sintaxe das declarações RemoveHandler será sempre compatível com a declaração AddHandler usada para começar a manipulação de eventos.Por exemplo:
RemoveHandler CI.AnEvent, AddressOf EHandler
Manipulado Eventos Herdados de uma Classe Base
Derived classes—classes that inherit characteristics from a base class—can handle events raised by their base class using the HandlesMyBase statement.
Para manipular eventos de uma classe base
Declare um manipulador de eventos na classe derivada adicionando uma declaração Handles MyBase.nomedoevento na declaração de seu evento manipulador de eventos, onde nomedoevento é o nome do evento na classe base manipulada.Por exemplo:
Public Class BaseClass Public Event BaseEvent(ByVal i As Integer) ' Place methods and properties here. End Class Public Class DerivedClass Inherits BaseClass Sub EventHandler(ByVal x As Integer) Handles MyBase.BaseEvent ' Place code to handle events from BaseClass here. End Sub End Class
Consulte também
Conceitos
Eventos e manipuladores de eventos
Delegados e o operador AddressOf