これで、イベントを宣言する基本クラスがあります。StatusTextChanged
です。私の子クラスはもちろん、このイベントを直接呼び出すことはできません。基本クラスのイベント
だから私は、この(単純化のために)のようなもので羽目になる:
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
そして、子クラスで私が MyBase.RaiseStatusTextChangedEvent("something")
を呼び出します。 これを行うには、より良い方法またはより良い方法がありますか?
編集:VB.NETまたはC#、どちらでも基本的に同じです。
編集:だから応答の後、私はあなたの子供のための具体的な必要性がある場合を除き、その後ちょうど...子クラスで
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
のパラメータのための私のコードです。 System.Windows.Forms.TextBoxを見ると、この目的のために多くの保護された仮想メソッド(OnTextChangedなど)が表示されます。 –
オーバーライド可能なビットは完全にオプションです.cの動作を変更する必要がある場合にのみ必要ですサブクラス。 –
あなたのサンプルコードに欠落している行がありますが、それ自体は問題を発生させるイベントに関しては重要ではありませんが、完全性のためにおそらく "_StatusText = value"を " (StringとしてのByVal値) "行を設定します。実際には、状況テキストが*実際に変更されていない限りStatusTextChangedイベントが発生しないようにするために、If値<> _StatusText Thenなどですべてをラップすることもできます。 – d7samurai