В VB.NET (не c #) ...
Я хочу создать событие, которое может быть отменено слушателем. Так же, как вы можете отменить событие закрытия формы winforms, в этом случае форма не будет закрыта.
Я уже реализовал производный класс от EventArgs, который имеет настраиваемое свойство Cancel следующим образом:
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
Обратите внимание, что я передаю аргумент отмены byRef в конструктор.
Установленный мной слушатель устанавливает для свойства значение Cancel = True. Я подумал, что ByRef означает, что и _cancel, и cancel указывают на одно и то же место в стеке, и поэтому установка _cancel = true, таким образом, сделает cancel = true. Но это не то поведение, которое я получаю. _cancel становится истинным в установщике, но я предполагаю, что аргумент конструктора остается ложным.
Как правильно сделать это в vb.net?
Сет