WithEvents et la clause Handles
Mise à jour : novembre 2007
L'instruction WithEvents et la clause Handles assurent une méthode déclarative de spécification des gestionnaires d'événements. Un événement déclenché par un objet déclaré par le mot clé WithEvents peut être géré par n'importe quelle procédure avec une instruction Handles pour cet événement, comme le montre l'exemple suivant :
' Declare a WithEvents variable.
Dim WithEvents EClass As New EventClass
' Call the method that raises the object's events.
Sub TestEvents()
EClass.RaiseEvents()
End Sub
' Declare an event handler that handles multiple events.
Sub EClass_EventHandler() Handles EClass.XEvent, EClass.YEvent
MsgBox("Received Event.")
End Sub
Class EventClass
Public Event XEvent()
Public Event YEvent()
' RaiseEvents raises both events.
Sub RaiseEvents()
RaiseEvent XEvent()
RaiseEvent YEvent()
End Sub
End Class
L'instruction WithEvents et la clause Handles représentent souvent la meilleure solution pour les gestionnaires d'événements, parce que la syntaxe déclarative qu'ils utilisent simplifie beaucoup le codage, la lecture et le débogage de la gestion des événements. Il faut cependant garder à l'esprit les restrictions liées à l'utilisation des variables WithEvents :
Vous ne pouvez pas utiliser une variable WithEvents comme variable d'objet. Cela signifie que vous ne pouvez pas la déclarer en tant que Object ; vous devez spécifier le nom de la classe lorsque vous déclarez la variable.
Les événements partagésétant associés à des instances de classe, vous ne pouvez pas utiliser WithEvents pour les gérer de façon déclarative. De même, vous ne pouvez pas utiliser WithEvents ou Handles pour gérer les événements de Structure. Dans les deux cas, vous pouvez utiliser l'instruction AddHandler pour gérer ces événements.
Vous ne pouvez pas créer de tableaux de variables WithEvents.
Les variables WithEvents autorisent un seul gestionnaire d'événements à gérer un ou plusieurs types d'événements ou un ou plusieurs gestionnaires d'événements à gérer le même type d'événements.