Question

Je compris que Handles est une seule façon d'ajouter dans le constructeur AddHandler, mais en général sont ces deux sont équivalentes?

Était-ce utile?

La solution

Il y a une certaine différence dans exactement quand le gestionnaire d'événements est attaché, et ce qui se passe autour d'elle. Par exemple, lors de l'utilisation WithEvents et Handles, le compilateur émet un code qui enveloppe l'accès à la variable contenant l'instance qui expose l'événement dans une propriété, et à l'intérieur du dispositif de réglage de propriété, il se détache le gestionnaire d'événements de l'instance précédente (le cas échéant) , puis fixez le gestionnaire d'événements à la nouvelle instance (le cas échéant).

Cela signifie que si vous prenez les exemples de code suivants, l'accès à mm se comportera différemment:

' WithEvents approach '
Dim WithEvents mm As SomeClass
Sub Main()
    mm = New SomeClass()
    Dim nn As SomeClass = mm
End Sub

' Other approach '
Dim mm As SomeClass
Sub Main()
    mm = New SomeClass()
    Dim nn As SomeClass = mm
End Sub

Dans le cas de WithEvents, mm = New SomeClass() appellera en fait un poseur de propriété et Dim nn As SomeClass = mm va récupérer la valeur d'un getter de la propriété, alors que dans le second cas, il n'y aura pas de propriété créée pour la valeur, mais le code accédera à la champ directement.

Autres conseils

Private Sub Button1_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs) Handles Button1.Click

End Sub
Private Sub Button2_Click(ByVal sender As System.Object, _
                          ByVal e As System.EventArgs)

End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    'this

    AddHandler Button2.Click, AddressOf Button2_Click

    'now Button2_Click looks like this

    'Private Sub Button2_Click(ByVal sender As System.Object, _
    'ByVal e As System.EventArgs) Handles Button2.Click

End Sub
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top