プロパティ変更イベント
更新 : 2007 年 11 月
PropertyName というプロパティが変更されたときに、コントロールから通知が送信されるようにするには、PropertyNameChanged というイベントと、イベントを発生させる OnPropertyNameChanged というメソッドを定義します。Windows フォームの名前付け規則に従い、プロパティ名の前に Changed という単語が付け加えられます。プロパティ変更イベントの型に関連付けられているイベント デリゲート型は EventHandler であり、イベント データ型は EventArgs です。基本クラスの Control は、BackColorChanged、BackgroundImageChanged、FontChanged、LocationChanged など、多くのプロパティ変更イベントを定義します。イベントに関する背景情報については、「イベントの処理と発生」と「Windows フォーム コントロールのイベント」を参照してください。
プロパティ変更イベントを使用すると、変更に反応するイベント ハンドラをコントロールのコンシューマが追加できるため、便利です。コントロールが発生させたプロパティ変更イベントへこのコントロール自体が応答する必要がある場合には、デリゲートをイベントへアタッチする代わりに、対応する OnPropertyNameChanged メソッドをオーバーライドします。通常、プロパティ変更イベントに対して応答するときに、コントロールは他のプロパティを更新するか、コントロールの描画面全体または一部を再描画します。
Control から継承したプロパティ変更イベントの一部に対して FlashTrackBar カスタム コントロールが応答する部分を示す例を次に示します。サンプル全体については、「方法 : 進行状況を示す Windows フォーム コントロールを作成する」を参照してください。
Protected Overrides Sub OnTextChanged(ByVal E As EventArgs)
MyBase.OnTextChanged(E)
Invalidate()
End Sub
Protected Overrides Sub OnBackColorChanged(ByVal E As EventArgs)
MyBase.OnTextChanged(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.OnTextChanged(e);
if ((baseBackground != null) && (!showGradient)) {
baseBackground.Dispose();
baseBackground = null;
}
}