in VB.NET (non C#) ...Come si crea un evento annullabile in vb.net
voglio creare un evento che può essere annullato da chi ascolta. Proprio come è possibile annullare l'evento di chiusura di un modulo Winforms, nel qual caso il modulo non verrà chiuso.
mi hanno già attuato una classe derivata da EventArgs che ha un impostabile Annulla proprietà come segue:
Public Class AnnounceNavigateEventArgs
Inherits EventArgs
Private _cancel As Boolean = False
''' <summary>
''' Initializes a new instance of the AnnounceNavigateEventArgs class.
''' </summary>
Public Sub New(ByRef cancel As Boolean)
_cancel = cancel
End Sub
Public Property Cancel() As Boolean
Get
Return _cancel
End Get
Set(ByVal value As Boolean)
_cancel = value
End Set
End Property
End Class
Si noti che sto passando l'argomento Cancel ByRef al costruttore.
Il listener che ho impostato sta impostando la proprietà su Cancel = True. Pensavo che ByRef significasse che sia _cancel che cancel avrebbero puntato alla stessa posizione nello stack e che l'impostazione _cancel = true avrebbe quindi reso cancel = true. Ma questo non è il comportamento che sto ottenendo. _cancel diventa vero nel setter ma suppongo che l'argomento del costruttore resti falso.
Qual è il modo corretto di farlo in vb.net?
Seth
Grazie ... l'ha fatto. Seth –
Non è necessario ereditare da "CancelEventArgs'; puoi usarlo direttamente –
'Evento pubblico annunciante come CancelEventHandler' –