Ok, so I have a base class which declares the event StatusTextChanged. My child class, of course cannot directly raise this event.
So I wind up with something like this (for simplicity sake):
Public MustInherit Class FooBase
Public Event StatusTextChanged(ByVal StatusText As String)
Protected Sub RaiseStatusTextChangedEvent(ByVal StatusText As String)
RaiseEvent StatusTextChanged(StatusText)
End Sub
End Class
And then in the child class I call
MyBase.RaiseStatusTextChangedEvent("something").
Is there a better or more recommended way to do this?
edit: VB.NET or C#, either way it works essentially the same.
edit: So after the responses, I’m at this in the base class, then just set the StatusText property in the child class …
Public Event StatusTextChanged(ByVal StatusText As String)
Private _StatusText As String = "Idle."
Public Property StatusText() As String
Get
Return _StatusText
End Get
Protected Set(ByVal value As String)
RaiseEvent StatusTextChanged(value)
End Set
End Property
I would say that you are rather close to the recommeneded way (or at least the one I would recommend).
I would make a few alterations to your code, given a choice:
Protected OverridablePublic Event StatusTextChanged As EventHandler(Of YourCustomEventArgs)The resulting code:
The custom eventargs class:
The event implementation in your base class:
…and finally a code line for raising the event; either in the base class or a class that inherits it:
This will be more in line with how events are designed within the rest of the .NET framework.