Partager via


AddHandler, instruction

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

Syntaxe

AddHandler event, {AddressOf eventhandler | expression }

Pièces

Composant Descriptif
event Nom de l’événement à 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.

Remarques

Les AddHandler instructions 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 eventhandler procédure ou l’expression expression lambda) doit correspondre à la signature de l’événement event.

Le Handles mot clé 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 des procédures aux événements au moment de l’exécution. Utilisez le mot clé lors de la Handles définition d’une procédure pour spécifier qu’elle gère un événement particulier. Pour plus d’informations, consultez Handles.

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

Remarque

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

Exemple :

L’exemple suivant montre comment utiliser AddHandler avec ConvertEventHandler des délégués pour les scénarios de liaison de données. Cet exemple montre un cas d’usage pratique dans lequel les gestionnaires d’événements sont attachés et FormatParse les événements d’un Binding objet à convertir entre les valeurs décimales et les chaînes monétaires.

Public Class DataBindingExample
    Private textBox1 As TextBox
    Private ds As DataSet
    
    Public Sub New()
        textBox1 = New TextBox()
        ds = New DataSet()
        SetupSampleData()
        BindControlWithAddHandler()
    End Sub
    
    Private Sub SetupSampleData()
        Dim table As New DataTable("Orders")
        table.Columns.Add("OrderAmount", GetType(Decimal))
        table.Rows.Add(123.45D)
        table.Rows.Add(67.89D)
        ds.Tables.Add(table)
    End Sub
    
    Private Sub BindControlWithAddHandler()
        Dim binding As New Binding("Text", ds, "Orders.OrderAmount")
        
        ' Use AddHandler to associate ConvertEventHandler delegates
        AddHandler binding.Format, AddressOf DecimalToCurrency
        AddHandler binding.Parse, AddressOf CurrencyToDecimal
        
        textBox1.DataBindings.Add(binding)
    End Sub
    
    Private Sub DecimalToCurrency(ByVal sender As Object, ByVal e As ConvertEventArgs)
        If e.DesiredType IsNot GetType(String) Then
            Return
        End If
        e.Value = CDec(e.Value).ToString("c")
    End Sub
    
    Private Sub CurrencyToDecimal(ByVal sender As Object, ByVal e As ConvertEventArgs)
        If e.DesiredType IsNot GetType(Decimal) Then
            Return
        End If
        e.Value = Convert.ToDecimal(e.Value.ToString())
    End Sub
End Class

' Simple example for basic AddHandler usage
Sub TestBasicEvents()
    Dim Obj As New Class1
    AddHandler Obj.Ev_Event, AddressOf EventHandler
    Obj.CauseSomeEvent()
    RemoveHandler Obj.Ev_Event, AddressOf EventHandler
    Obj.CauseSomeEvent()
    
    ' Lambda expression example
    AddHandler Obj.Ev_Event, Sub ()
        MsgBox("Lambda caught event.")
    End Sub
    Obj.CauseSomeEvent()
End Sub

Sub EventHandler()
    MsgBox("EventHandler caught event.")
End Sub

Public Class Class1
    Public Event Ev_Event()
    Sub CauseSomeEvent()
        RaiseEvent Ev_Event()
    End Sub
End Class

Cet exemple montre :

  • Création d’un Binding objet pour la liaison de données.
  • Utilisation AddHandler pour attacher ConvertEventHandler des délégués aux événements et Parse aux Format événements.
  • Implémentation de méthodes de gestionnaire d’événements qui convertissent entre les formats de chaîne décimale et monétaire.
  • Utilisation de base AddHandler avec des événements personnalisés et des expressions lambda.

Voir aussi