屬性變更事件
更新:2007 年 11 月
如果希望控制項在名為 PropertyName 的屬性變更時傳送告知,請定義名為 PropertyNameChanged 的事件,以及引發事件且名為 OnPropertyNameChanged 的方法。Windows Form 中的命名慣例是將文字 Changed 附加到屬性的名稱。屬性變更事件的相關事件委派 (Delegate) 型別為 EventHandler,而事件資料型別為 EventArgs。基底類別 Control 定義了許多屬性變更事件,例如 BackColorChanged、BackgroundImageChanged、FontChanged、LocationChanged 和其他事件。如需事件的背景資訊,請參閱處理和引發事件和 Windows Form 控制項中的事件。
屬性變更事件很有用處,因為它們允許控制項的消費者附加會回應變更的事件處理常式。如果您的控制項需要回應其引發的屬性變更事件,請覆寫對應的 OnPropertyNameChanged 方法,而不要附加委派至事件。控制項基本上藉著更新其他屬性或重繪其繪圖平面的局部或全部來回應屬性變更事件。
下列範例示範 FlashTrackBar 自訂控制項如何回應某些繼承自 Control 的屬性變更事件。如需完整範例,請參閱 HOW TO:建立顯示進度的 Windows Form 控制項。
Protected Overrides Sub OnTextChanged(ByVal E As EventArgs)
MyBase.OnTextChanged(E)
Invalidate()
End Sub
Protected Overrides Sub OnBackColorChanged(ByVal E As EventArgs)
MyBase.OnTextChanged(E)
If (baseBackground IsNot Nothing) And Not ShowGradient Then
baseBackground.Dispose()
baseBackground = Nothing
End If
End Sub
protected override void OnTextChanged(EventArgs e) {
base.OnTextChanged(e);
Invalidate();
}
protected override void OnBackColorChanged(EventArgs e) {
base.OnTextChanged(e);
if ((baseBackground != null) && (!showGradient)) {
baseBackground.Dispose();
baseBackground = null;
}
}