Partage via


AddHandler, instruction

Associe un événement à un gestionnaire d’événements au moment de l’exécution.

Syntaxe

AddHandler event, {AddressOf eventhandler | expression }

Éléments

Élément Description
event Nom de l’événement que vous souhaitez gérer.
eventhandler Nom d’une procédure qui gère l’événement.
expression Expression lambda qui gère l’événement.

Les parties AddressOf eventhandler et expression s’excluent mutuellement.

Notes

Les instructions AddHandler et RemoveHandler vous permettent de démarrer et d’arrêter la gestion des événements à tout moment pendant l’exécution du programme.

La signature du nouveau gestionnaire d’événements (la procédure eventhandler ou la lambda expression) doit correspondre à la signature de l’événement event.

Le mot clé Handles et l'instruction AddHandler vous permettent de spécifier que des procédures particulières gèrent des événements particuliers, mais il existe des différences. L'instruction AddHandler connecte les procédures aux événements au moment de l'exécution. Utilisez le mot clé Handles quand vous définissez une procédure pour indiquer qu'elle gère un événement particulier. Pour plus d’informations, consultez Descripteur.

Un gestionnaire ajouté avec une lambda explicite NE PEUT PAS être supprimé ultérieurement (à l’aide de RemoveHandler). En effet, si la lambda ne reçoit pas de nom, il n’est pas possible de la référencer ultérieurement. Toutefois, l’affectation de la lambda à une variable et l’ajout du gestionnaire via cette variable permet de supprimer le gestionnaire à l’aide de cette variable.

Notes

Pour les événements personnalisés, l’instruction AddHandler appelle l’accesseur AddHandler de l’événement. Pour plus d’informations sur les événements personnalisés, consultez Instruction d’événement.

Exemple

Sub TestEvents()
    Dim Obj As New Class1
    ' Associate an event handler with an event.
    AddHandler Obj.Ev_Event, AddressOf EventHandler
    ' Call the method to raise the event.
    Obj.CauseSomeEvent()
    ' Stop handling events.
    RemoveHandler Obj.Ev_Event, AddressOf EventHandler
    ' This event will not be handled.
    Obj.CauseSomeEvent()
    ' Associate an event handler with an event, using a lambda.
    ' This handler cannot be removed.
    AddHandler Obj.Ev_Event, Sub ()
        MsgBox("Lambda caught event.")
    End Sub
    ' This event will be handled by the lambda above.
    Obj.CauseSomeEvent()
End Sub

Sub EventHandler()
    ' Handle the event.
    MsgBox("EventHandler caught event.")
End Sub

Public Class Class1
    ' Declare an event.
    Public Event Ev_Event()
    Sub CauseSomeEvent()
        ' Raise an event.
        RaiseEvent Ev_Event()
    End Sub
End Class

Voir aussi