バージョン

OnBeforeSelectedAppointmentsChange メソッド

SelectedAppointments に変更が適用される前に、BeforeSelectedAppointmentsChange イベントを発生させます。
シンタックス
'宣言
 
Protected Overridable Sub OnBeforeSelectedAppointmentsChange( _
   ByVal e As BeforeSelectedAppointmentsEventArgs _
) 
protected virtual void OnBeforeSelectedAppointmentsChange( 
   BeforeSelectedAppointmentsEventArgs e
)

パラメータ

e
イベントのデータを提供する BeforeSelectedAppointmentsEventArgs
解説

イベントが発生すると、デリゲートを通じてイベント ハンドラーが呼び出されます。

OnBeforeSelectedAppointmentsChange メソッドを使用すれば、デリゲートをアタッチせずに派生クラスでイベントを処理できます。これは、派生クラスでイベントを処理する際によく用いられる手法です。

継承時の注意: 派生クラスで OnBeforeSelectedAppointmentsChange をオーバーライドする場合は、登録されたデリゲートがイベントを受信できるようにするため、必ず基本クラスの OnBeforeSelectedAppointmentsChange メソッドを呼び出してください。

使用例
Imports Infragistics.Shared
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinSchedule
Imports System.Diagnostics

    Private Sub ultraCalendarInfo1_BeforeSelectedAppointmentsChange(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinSchedule.BeforeSelectedAppointmentsEventArgs) Handles ultraCalendarInfo1.BeforeSelectedAppointmentsChange

        '----------------------------------------------------------------------------------------------------
        '	説明
        '	BeforeSelectedAppointmentsChange
        '
        '	1 つ以上の Appointment が選択または選択解除される前に発生します
        '
        '----------------------------------------------------------------------------------------------------

        '	NewSelectedAppointments コレクションのカウントが既存の
        '	SelectedAppointments コレクションのカウントより大きい場合、
        '	新しい予定が選択されます
        Dim info As String = String.Empty
        If (e.NewSelectedAppointments.Count > Me.ultraCalendarInfo1.SelectedAppointments.Count) Then
            info += "The following appointments have been added to the selection:" + vbCrLf + vbCrLf

            If (Me.ultraCalendarInfo1.SelectedAppointments.Count > 0) Then
                '	NewSelectedAppointments コレクションを繰り返し、
                '	各新しい選択についての情報を取得します
                Dim newAppointment As Appointment
                For Each newAppointment In e.NewSelectedAppointments

                    '	既存の選択された予定を繰り返し、コレクションに追加した
                    '	新しい予定を決定します
                    Dim oldAppointment As Appointment
                    For Each oldAppointment In Me.ultraCalendarInfo1.SelectedAppointments
                        If (newAppointment Is oldAppointment) Then
                            Exit For
                        Else

                            '	既存の予定が SelectedAppointments コレクションに存在する場合、
                            '	ユーザーの新しい予定ではないため、新しい予定として表示しません
                            info += newAppointment.Subject + " ("
                            info += newAppointment.StartDateTime.ToLongDateString() + ")" + vbCrLf
                        End If

                    Next
                Next

            Else
                '	SelectedAppointments コレクションのカウントは 0 の場合、
                '	既に存在していることを確認する必要がないため、すべてを表示します
                Dim newAppointment As Appointment
                For Each newAppointment In e.NewSelectedAppointments
                    '	既存の予定が SelectedAppointments コレクションに存在する場合、
                    '	NewSelectedAppointments コレクションにない場合、選択解除されました
                    info += newAppointment.Subject + " ("
                    info += newAppointment.StartDateTime.ToLongDateString() + ")" + vbCrLf
                Next
            End If
        ElseIf (e.NewSelectedAppointments.Count > 0) Then

            '	そうでない場合、既存の予定を選択解除されました
            info += "The following appointments have been removed from the selection:" + vbCrLf + vbCrLf

            '	既存の SelectedAppointments コレクションを繰り返し、
            '	各の選択解除されている予定についての情報を取得します
            Dim oldAppointment As Appointment
            For Each oldAppointment In Me.ultraCalendarInfo1.SelectedAppointments
                '	既存の選択された予定を繰り返し、コレクションに追加した
                '	新しい予定を決定します
                Dim newAppointment As Appointment
                For Each newAppointment In e.NewSelectedAppointments
                    If (newAppointment Is oldAppointment) Then
                        Exit For
                    Else

                        '	既存の予定が SelectedAppointments コレクションに存在する場合、
                        '	NewSelectedAppointments コレクションにない場合、選択解除されました
                        info += oldAppointment.Subject + " ("
                        info += oldAppointment.StartDateTime.ToLongDateString() + ")" + vbCrLf
                    End If
                Next

            Next
        Else
            '	選択がクリアされました
            info += "The SelectedAppointments collection is about to be cleared." + vbCrLf



            info += vbCrLf + vbCrLf + "Continue?"

            '	エンド ユーザーに MessageBox を表示し、続行するかどうかを確認します
            Dim result As DialogResult = MessageBox.Show(info, "BeforeSelectedAppointmentsChange", MessageBoxButtons.YesNo)

            '	続行しない場合、イベントをキャンセルします
            If (result = DialogResult.No) Then e.Cancel = True
        End If

    End Sub
using System.Diagnostics;
using Infragistics.Shared;
using Infragistics.Win;
using Infragistics.Win.UltraWinSchedule;

		private void ultraCalendarInfo1_BeforeSelectedAppointmentsChange(object sender, Infragistics.Win.UltraWinSchedule.BeforeSelectedAppointmentsEventArgs e)
		{		

			//----------------------------------------------------------------------------------------------------
			//	説明
			//	BeforeSelectedAppointmentsChange
			//
			//	1 つ以上の Appointment が選択または選択解除される前に発生します
			//
			//----------------------------------------------------------------------------------------------------

			//	NewSelectedAppointments コレクションのカウントが既存の
			//	SelectedAppointments コレクションのカウントより大きいの場合、
			//	新しい予定が選択されました
			string info = string.Empty;
			if ( e.NewSelectedAppointments.Count > this.ultraCalendarInfo1.SelectedAppointments.Count )
			{
				info += "The following appointments have been added to the selection:" + "\n\n";

				if ( this.ultraCalendarInfo1.SelectedAppointments.Count > 0 )
				{
					//	NewSelectedAppointments コレクションを繰り返し、
					//	各の新しい選択についての情報を取得します
					foreach( Appointment newAppointment in e.NewSelectedAppointments )
					{
						//	既存の選択された予定を繰り返し、コレクションに追加した
						//	新しい予定を決定します
						foreach( Appointment oldAppointment in this.ultraCalendarInfo1.SelectedAppointments )
						{
							if ( newAppointment == oldAppointment )
								break;
							else
							{
								//	既存の予定が SelectedAppointments コレクションに存在する場合、
								//	ユーザーによって新しい予定ではないため、新しい予定として表示しません
								info += newAppointment.Subject + " (";
								info += newAppointment.StartDateTime.ToLongDateString() + ")" + "\n";
							}

						}
						
					}
				}
				else
				{
					//	SelectedAppointments コレクションのカウントは 0 の場合、
					//	既に存在していることを確認する必要がないため、すべてを表示します
					foreach( Appointment newAppointment in e.NewSelectedAppointments )
					{
						//	既存の予定が SelectedAppointments コレクションに存在する場合、
						//	NewSelectedAppointments コレクションにない場合、選択解除されました
						info += newAppointment.Subject + " (";
						info += newAppointment.StartDateTime.ToLongDateString() + ")" + "\n";
					}
				}
			}
			else
			if ( e.NewSelectedAppointments.Count > 0 )
			{
				//	そうでない場合、既存の予定を選択解除されました
				info += "The following appointments have been removed from the selection:" + "\n\n";

				//	既存の SelectedAppointments コレクションを繰り返し、
				//	各の選択解除されている予定についての情報を取得します
				foreach( Appointment oldAppointment in this.ultraCalendarInfo1.SelectedAppointments )
				{
					//	既存の選択された予定を繰り返し、コレクションに追加した
					//	新しい予定を決定します
					foreach( Appointment newAppointment in e.NewSelectedAppointments )
					{
						if ( newAppointment == oldAppointment )
							break;
						else
						{
							//	既存の予定が SelectedAppointments コレクションに存在する場合、
							//	NewSelectedAppointments コレクションにない場合、選択解除されました
							info += oldAppointment.Subject + " (";
							info += oldAppointment.StartDateTime.ToLongDateString() + ")" + "\n";
						}
					}
					
				}
			}
			else
			{
				//	選択がクリアされました
				info += "The SelectedAppointments collection is about to be cleared." + "\n";

			}

			info += "\n\n" + "Continue?";

			//	エンド ユーザーに MessageBox を表示し、続行するかどうかを確認します
			DialogResult result = MessageBox.Show( info, "BeforeSelectedAppointmentsChange", MessageBoxButtons.YesNo );

			//	続行しない場合、イベントをキャンセルします
			if ( result == DialogResult.No )
				e.Cancel = true;

		}
参照