プロパティ変更イベント

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

関連項目