プロパティ変更イベント
PropertyName という名前のプロパティが変更されたときにコントロールから通知が送られるようにするには、 PropertyNameChanged
という名前のイベントと、そのイベントを発生させる On
PropertyNameChanged
という名前のメソッドを定義します。 Windows フォームの名前付け規則では、プロパティの名前の後に Changed というワードを付け足す決まりになっています。 プロパティ変更イベントに関連付けられたイベント デリゲート型は EventHandler で、イベント データ型は EventArgs です。 基底クラス Control では、多くのプロパティ変更イベントが定義されます (BackColorChanged、BackgroundImageChanged、FontChanged、LocationChanged など)。 イベントの背景情報については、「イベント」と「Windows フォーム コントロールのイベント」を参照してください。
プロパティ変更イベントは、コントロールのコンシューマーが変更に応答するイベント ハンドラーをアタッチできるようにするために役立ちます。 コントロールで、発生したプロパティ変更イベントに応答する必要がある場合は、イベントにデリゲートをアタッチするのではなく、対応する On
PropertyNameChanged
メソッドをオーバーライドします。 通常、コントロールでは、他のプロパティを更新するか、自身の描画サーフェイスの一部またはすべてを再描画することによって、プロパティ変更イベントへの応答が行われます。
次の例は、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
関連項目
.NET Desktop feedback