Я бы сказал, что вы достаточно близки к рекомендованному пути (или, по крайней мере, к тому, который я бы порекомендовал).
Я бы сделал несколько изменений в вашем коде, если бы у меня был выбор:
- Сделать StatusTextChanged
Protected Overridable
- Обтекание StatusText в пользовательском классе EventArgs
- Измените объявление StatusTextChanged на
Public Event StatusTextChanged As EventHandler(Of YourCustomEventArgs)
Полученный код:
Класс пользовательских событий:
Public Class TextEventArgs
Inherits EventArgs
Private _text As String
Public Sub New(ByVal text As String)
_text = text
End Sub
Public ReadOnly Property Text() As String
Get
Return _text
End Get
End Property
End Class
Реализация события в вашем базовом классе:
Public Event StatusTextChanged As EventHandler(Of TextEventArgs)
Protected Overridable Sub OnStatusTextChanged(ByVal e As TextEventArgs)
RaiseEvent StatusTextChanged(Me, e)
End Sub
... и, наконец, строка кода для вызова события; либо в базовом классе, либо в классе, который его наследует:
OnStatusTextChanged(New TextEventArgs("some text"))
Это будет в большей степени соответствовать тому, как события создаются в остальной части .NET Framework.