Compartilhar via


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

  1. Crie uma classe simples que contém um evento

    Class Class1
        Public Event AnEvent(ByVal EventNumber As Integer)
    End Class
    
  2. 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
    
  3. No Editor e Código, escolha a variável WithEvents que você acabou de declarar através da lista Nome da Classe na esquerda.

  4. 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.

  5. 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

  1. 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
    
  2. 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
    
  3. 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

AddHandler e RemoveHandler

Referência

Trata

AddHandler demonstrativo