属性更改事件
如果希望控件在名为属性名称 的属性发生更改时发送通知,则请定义一个名为属性名称Changed 的事件,以及一个名为 On属性名称Changed 的方法来引发该事件。 Windows 窗体中的命名规则是在属性的名称后追加 Changed 一词。 property-changed 事件的关联事件委托类型为 EventHandler,事件数据类型为 EventArgs。 Control 基类定义了许多 property-changed 事件,例如 BackColorChanged、BackgroundImageChanged、FontChanged、LocationChanged 等。 有关事件的背景信息,请参见 处理和引发事件 和 Windows 窗体控件中的事件。
Property-changed 事件非常有用,因为它们允许控件的使用者附加对更改进行响应的事件处理程序。 如果控件需要对它所引发的 property-changed 事件进行响应,则需要重写相应的 On属性名称Changed 方法,而不是给事件附加委托。 控件通常通过更新其他属性或重新绘制某些或全部绘制图面,对 property-changed 事件作出响应。
下面的示例演示 FlashTrackBar 自定义控件对某些继承自 Control 的 property-changed 事件的响应方式。 有关完整示例,请参见 如何:创建显示进度的 Windows 窗体控件。
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
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;
}
}