Share via


Comment : écrire des gestionnaires d'événements

Mise à jour : novembre 2007

La façon dont vous construisez un gestionnaire d'événements dépend de celle dont vous voulez l'associer aux événements. La méthode standard de création d'un gestionnaire d'événements consiste à utiliser le mot clé Handles avec le mot clé WithEvents. Visual Basic offre une autre méthode de gestion des événements : l'instruction AddHandler. AddHandler et RemoveHandler vous permettent de démarrer et d'interrompre dynamiquement la gestion des événements pour un événement spécifique. Vous pouvez utiliser l'une ou l'autre de ces méthodes, mais pas à la fois WithEvents et AddHandler avec le même événement.

Gestion des événements à l'aide de WithEvents

Le mot clé WithEvents vous permet de créer des variables d'objets au niveau de la classe ou du module qui sont utilisables avec la clause Handles dans les gestionnaires d'événements.

Pour gérer les événements à l'aide de WithEvents et de la clause Handles

  1. Créez une classe simple qui contient un événement.

    Class Class1
        Public Event AnEvent(ByVal EventNumber As Integer)
    End Class
    
  2. Dans la classe ou le module destiné à gérer l'événement, utilisez le mot clé WithEvents pour déclarer une variable d'objet pour la source de vos événements, conformément à l'exemple suivant :

    Public WithEvents ClassInst As Class1
    
  3. Dans l'éditeur de code, choisissez la variable WithEvents que vous venez de déclarer dans la liste déroulante Nom de la classe située à gauche.

  4. Choisissez l'événement que vous souhaitez gérer dans la liste déroulante Nom de la méthode située à droite. L'éditeur de code crée la procédure gestionnaire d'événements vide avec une clause Handles.

    Remarque :

    Cette étape est facultative. Vous pouvez créer manuellement la procédure gestionnaire d'événements à condition que la procédure créée soit une sous-routine, contienne la liste d'arguments correspondant à l'événement géré et comporte une clause Handles spécifiant l'événement géré.

  5. Ajoutez le code de gestion des événements à la procédure gestionnaire d'événements à l'aide des arguments fournis. Le code suivant en est un exemple :

    Public Sub ClassInst_AnEvent(ByVal EventNumber As Integer) _
          Handles ClassInst.AnEvent
        MsgBox("Received event number: " & CStr(EventNumber))
    End Sub
    

Gestion des événements à l'aide de AddHandler

Vous pouvez utiliser l'instruction AddHandler pour connecter dynamiquement les événements par rapport aux procédures gestionnaires d'événements.

Pour gérer des événements à l'aide de AddHandler

  1. Créez une sous-routine pour gérer l'événement, comme dans l'exemple suivant :

    Public Sub EHandler(ByVal EventNumber As Integer)
        MsgBox("Received event number " & CStr(EventNumber))
    End Sub
    
  2. Déclarez une variable d'objet de la classe qui est la source des événements que vous souhaitez gérer. Contrairement à une variable WithEvents, il peut s'agir d'une variable locale dans une procédure. Par exemple :

    Public Sub TestAddHandler()
        Dim CI As New Class1
    End Sub
    
  3. Utilisez l'instruction AddHandler pour spécifier le nom de l'émetteur d'événements et l'instruction AddressOf pour fournir le nom de votre gestionnaire d'événements. Par exemple, ajoutez le code suivant à la fin de la sous-routine TestAddHandler :

    AddHandler CI.AnEvent, AddressOf EHandler
    

    N'importe quelle procédure peut servir de gestionnaire d'événements si elle prend en charge les bons arguments pour l'événement géré.

Utilisation de RemoveHandler pour arrêter la gestion des événements

Vous pouvez utiliser l'instruction RemoveHandler pour déconnecter dynamiquement les événements à partir des procédures gestionnaires d'événements.

Pour arrêter la gestion des événements en utilisant RemoveHandler

  • Utilisez l'instruction RemoveHandler pour spécifier le nom de l'émetteur d'événements et l'instruction AddressOf pour fournir le nom de votre gestionnaire d'événements. La syntaxe des instructions RemoveHandler correspondra toujours étroitement à l'instruction AddHandler utilisée pour démarrer la gestion des événements. Par exemple :

    RemoveHandler CI.AnEvent, AddressOf EHandler
    

Gestion d'événements hérités d'une classe de base

Les Classes dérivées, classes qui héritent des caractéristiques d'une classe de base, peuvent gérer des événements déclenchés par leur classe de base à l'aide de l'instruction HandlesMyBase.

Pour gérer les événements d'une classe de base

  • Déclarez un gestionnaire d'événements dans la classe dérivée en ajoutant une instruction Handles MyBase.NomÉvénement à la ligne de déclaration de votre procédure gestionnaire d'événements, où NomÉvénement est le nom de l'événement dans la classe de base gérée. Par exemple :

    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
    

Voir aussi

Concepts

Événements et gestionnaires d'événements

Délégués et opérateur AddressOf

AddHandler et RemoveHandler

Référence

Handles

AddHandler, instruction