'宣言 Protected Overridable Sub OnCalendarInfoChanged( _ ByVal e As CalendarInfoChangedEventArgs _ )
protected virtual void OnCalendarInfoChanged( CalendarInfoChangedEventArgs e )
イベントが発生すると、デリゲートを通じてイベント ハンドラーが呼び出されます。
OnCalendarInfoChanged メソッドを使用すれば、デリゲートを関連付けなくても、派生クラスでイベントを処理できます。これは、派生クラスでイベントを処理する際によく用いられる手法です。
継承時の注意: 派生クラスで OnCalendarInfoChanged をオーバーライドする場合は、登録されたデリゲートがイベントを受信できるようにするため、必ず基本クラスの OnCalendarInfoChanged メソッドを呼び出してください。
Imports Infragistics.Shared Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Imports System.Diagnostics Private Sub ultraCalendarInfo1_CalendarInfoChanged(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinSchedule.CalendarInfoChangedEventArgs) Handles ultraCalendarInfo1.CalendarInfoChanged '---------------------------------------------------------------------------------------------------- ' 説明 ' CalendarInfoChanged ' ' UltraCalendarInfo オブジェクトのプロパティが変更されたときに CalendarInfoChanged イベントを発生します ' UltraCalendarInfo オブジェクトに複数オブジェクト プロパティ (ActiveDay、Appointments など) があるため、 ' CalendarInfoChangedEventArgs の PropChangeInfo オブジェクト プロパティは Trigger プロパティによって保存される ' 入れ子になった PropChangeInfo オブジェクトを含むことが可能です親チェーンを再帰的に上へ移動し、 ' プロパティ変更の通知を発生したイベントの詳細リストを作成できます ' '---------------------------------------------------------------------------------------------------- Debug.WriteLine("**********CalendarInfoChanged event fired (begin)**********") Dim pci As PropChangeInfo = e.PropChangeInfo ' PropID を出力します Debug.WriteLine("PropID = " + pci.PropId.ToString()) ' Source を出力します If (pci.Source Is Nothing) Then Debug.WriteLine("Source Is Nothing") Else Debug.WriteLine("Source = " + pci.Source.ToString()) ' Trigger を出力します If (pci.Trigger Is Nothing) Then Debug.WriteLine("Trigger Is Nothing") Else Debug.WriteLine("Trigger = " + pci.Trigger.ToString()) ' null 値を持つ Trigger を見つけるまで親通知ェーンを移動します ' 変更についての情報が読みやすい様にインデントして ' デバッガーへ出力します Dim tabChars As String = Chr(9) While Not pci.Trigger Is Nothing ' 現在の Trigger の Trigger を取得して再帰します pci = pci.Trigger If pci.Trigger Is Nothing Then Exit While ' PropID を出力します Debug.WriteLine(tabChars + "PropID = " + pci.PropId.ToString()) ' Source を出力します If (pci.Source Is Nothing) Then Debug.WriteLine(tabChars + "Source Is Nothing") Else Debug.WriteLine(tabChars + "Source = " + pci.Source.ToString()) ' Trigger を出力します If (pci.Trigger Is Nothing) Then Debug.WriteLine(tabChars + "Trigger Is Nothing") Else Debug.WriteLine(tabChars + "Trigger = " + pci.Trigger.ToString()) ' 次の再帰のためにインデントを増加します tabChars += tabChars End If End If End While End If End If Debug.WriteLine("**********CalendarInfoChanged event fired (end)**********") Debug.WriteLine("") End Sub
using System.Diagnostics; using Infragistics.Shared; using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; private void ultraCalendarInfo1_CalendarInfoChanged(object sender, Infragistics.Win.UltraWinSchedule.CalendarInfoChangedEventArgs e) { //---------------------------------------------------------------------------------------------------- // 説明 // CalendarInfoChanged // // UltraCalendarInfo オブジェクトのプロパティが変更されたときに CalendarInfoChanged イベントを発生します // UltraCalendarInfo オブジェクトに複数オブジェクト プロパティ (ActiveDay、Appointments など) があるため、 // CalendarInfoChangedEventArgs の PropChangeInfo オブジェクト プロパティは Trigger プロパティによって保存される // 入れ子になった PropChangeInfo オブジェクトを含むことが可能です親チェーンを再帰的に上へ移動し、 // プロパティ変更の通知を発生したイベントの詳細リストを作成できます // //---------------------------------------------------------------------------------------------------- Debug.WriteLine( "**********CalendarInfoChanged event fired (begin)**********" ); PropChangeInfo pci = e.PropChangeInfo; // PropID を出力します Debug.WriteLine( "PropID = " + pci.PropId.ToString() ); // Source を出力します if ( pci.Source == null ) Debug.WriteLine( "Source = null" ); else Debug.WriteLine( "Source = " + pci.Source.ToString() ); // Trigger を出力します if ( pci.Trigger == null ) Debug.WriteLine( "Trigger = null" ); else Debug.WriteLine( "Trigger = " + pci.Trigger.ToString() ); // null 値を持つ Trigger を見つけるまで親の通知チェーンを移動します // 各再帰の変更についての情報が読みやすい様にインデントして // デバッガーに出力します string tabChars = ((char)(9)).ToString(); while( pci.Trigger != null ) { // 現在の Trigger の Trigger を取得して再帰します pci = pci.Trigger; if ( pci.Trigger == null ) break; // PropID を出力します Debug.WriteLine( tabChars + "PropID = " + pci.PropId.ToString() ); // Source を出力します if ( pci.Source == null ) Debug.WriteLine( tabChars + "Source = null" ); else Debug.WriteLine( tabChars + "Source = " + pci.Source.ToString() ); // Trigger を出力します if ( pci.Trigger == null ) Debug.WriteLine( tabChars + "Trigger = null" ); else Debug.WriteLine( tabChars + "Trigger = " + pci.Trigger.ToString() ); // 次の再帰のためにインデントを増加します tabChars += tabChars; } Debug.WriteLine( "**********CalendarInfoChanged event fired (end)**********" ); Debug.WriteLine(""); }