屬性變更事件
如果您想要讓控制項在名為 PropertyName 的屬性變更時傳送通知,請定義引發事件的名為 PropertyNameChanged
的事件和名為 On
PropertyNameChanged
的方法。 Windows Forms 中的命名慣例是將字組 Changed 附加至屬性的名稱。 屬性變更事件的相關事件委派類型是 EventHandler,而事件資料類型為 EventArgs。 Control 基底類別會定義許多屬性變更的事件,例如 BackColorChanged、BackgroundImageChanged、FontChanged、LocationChanged 等等。 如需事件的背景資訊,請參閱事件和 Windows Forms 控制項中的事件。
屬性變更事件很有用,因為可讓控制項的取用者附加可回應變更的事件處理常式。 如果您的控制項需要回應所引發的屬性變更事件,請覆寫對應的 On
PropertyNameChanged
方法,而不是將委派附加至事件。 控制項通常會藉由更新其他屬性或重新繪製部分或所有繪圖介面,來回應屬性變更事件。
下列範例示範 FlashTrackBar
自訂控制項如何回應它繼承自 Control 的一些屬性變更事件。 如需完整的範例,請參閱如何:建立顯示進度的 Windows Forms 控制項。
protected override void OnTextChanged(EventArgs e) {
base.OnTextChanged(e);
Invalidate();
}
protected override void OnBackColorChanged(EventArgs e) {
base.OnBackColorChanged(e);
if ((baseBackground != null) && (!showGradient)) {
baseBackground.Dispose();
baseBackground = null;
}
}
Protected Overrides Sub OnTextChanged(ByVal E As EventArgs)
MyBase.OnTextChanged(E)
Invalidate()
End Sub
Protected Overrides Sub OnBackColorChanged(ByVal E As EventArgs)
MyBase.OnBackColorChanged(E)
If (baseBackground IsNot Nothing) And Not ShowGradient Then
baseBackground.Dispose()
baseBackground = Nothing
End If
End Sub