属性更改事件

如果希望控件在名为 PropertyName 的属性更改时发送通知,请定义一个名为 PropertyNameChanged 的事件和一个引发该事件的名为 OnPropertyNameChanged 的方法。 Windows 窗体中的命名约定是将单词 Changed 附加到属性的名称中。 属性更改事件的关联事件委托类型是 EventHandler,该事件数据类型是 EventArgs。 基类 Control 定义了许多属性更改事件,例如 BackColorChangedBackgroundImageChangedFontChangedLocationChanged 等。 有关事件的背景信息,请参阅事件Windows 窗体控件中的事件

属性更改事件很有用,因为它们允许控件的使用者附加响应更改的事件处理程序。 如果控件需要响应它引发的属性更改事件,请重写相应的 OnPropertyNameChanged 方法,而不是将委托附加到该事件。 控件通常通过更新其他属性或重绘其部分或全部绘图图面来响应属性更改事件。

以下示例显示 FlashTrackBar 自定义控件如何响应其继承自 Control 的一些属性更改事件。 有关完整示例,请参阅如何:创建显示进度的 Windows 窗体控件

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

另请参阅