WithEvents e clausola Handles
Aggiornamento: novembre 2007
L'istruzione WithEvents e la clausola Handles forniscono una modalità dichiarativa per specificare i gestori di eventi. Un evento generato da un oggetto dichiarato con la parola chiave WithEvents può essere gestito mediante qualsiasi routine con un'istruzione Handles relativa a tale evento, come illustrato nell'esempio seguente:
' 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'istruzione WithEvents e la clausola Handles spesso costituiscono la soluzione ottimale per i gestori di eventi, poiché la sintassi dichiarativa che utilizzano semplifica le attività di codifica, lettura e debug per la gestione degli eventi. Si tengano tuttavia presenti le seguenti limitazioni relative all'utilizzo delle variabili WithEvents:
Non è possibile utilizzare una variabile WithEvents come variabile di oggetto. In altre parole, non è possibile dichiararla come Object ma è necessario specificare il nome della classe quando la si dichiara.
Poiché gli eventi condivisinon sono collegati a istanze di classe, non è possibile utilizzare WithEvents per gestire eventi condivisi in maniera dichiarativa. In modo analogo, non è possibile utilizzare WithEvents o Handles per gestire eventi da una Structure. In entrambi i casi, è possibile utilizzare l'istruzione AddHandler per gestire tali eventi.
Non è possibile creare matrici di variabili WithEvents.
Le variabili WithEvents consentono a unico gestore di eventi di gestire uno o più tipi di evento o a uno o più gestori di eventi di gestire lo stesso tipo di evento.