好吧,所以我有一個基類聲明事件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
正如弗雷德裏克指出狀態文本參數編碼,你拿出的辦法是非常接近.NET框架標準。看看System.Windows.Forms.TextBox,你會看到很多保護的虛擬方法(OnTextChanged等),只是爲了這個目的 – 2009-05-19 15:13:27
可重寫的位是完全可選的ofc,只有當你需要改變行爲子類。 – 2009-05-19 15:15:22
在我看來,你的示例代碼中缺少一行,儘管..並不是說它對事件引發問題本身而言很重要,但爲了完整起見,也許你應該在「事件提交問題」之後插入「_StatusText = value」設置(ByVal值爲字符串)「行。事實上,甚至可以將它全部包裝在「If value <> _StatusText Then」等中,以確保StatusTextChanged事件不會被引發,除非狀態文本實際上是*更改:) – d7samurai 2012-09-28 16:52:59