バージョン

OnBeforeSelectedHolidaysChange メソッド

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

パラメータ

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

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

OnBeforeSelectedHolidaysChange メソッドを使用すれば、デリゲートを関連付けなくても、派生クラスでイベントを処理できます。これは、派生クラスでイベントを処理する際によく用いられる手法です。

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

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

    Private Sub ultraCalendarInfo1_BeforeSelectedHolidaysChange(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinSchedule.BeforeSelectedHolidaysEventArgs) Handles ultraCalendarInfo1.BeforeSelectedHolidaysChange

        '----------------------------------------------------------------------------------------------------
        '	説明
        '	BeforeSelectedHolidaysChange
        '
        '	1 つ以上の Holiday が選択または選択解除された後に発生します
        '
        '----------------------------------------------------------------------------------------------------

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

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

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

                            '	既存の休日が SelectedHolidays コレクションに存在する場合、
                            '	ユーザーの新しい休日として表示されません
                            info += newHoliday.Name + " ("
                            info += newHoliday.StartDate.ToLongDateString() + ")" + vbCrLf
                        End If

                    Next
                Next

            Else
                '	SelectedHolidays コレクションのカウントが 0 の場合、
                '	存在するかどうかを確認する必要がないため、すべてを表示します
                Dim newHoliday As Holiday
                For Each newHoliday In e.NewSelectedHolidays
                    '	既存の休日が SelectedHolidays コレクションに存在し、
                    '	NewSelectedHolidays コレクションには存在しない場合、選択は解除されます
                    info += newHoliday.Name + " ("
                    info += newHoliday.StartDate.ToLongDateString() + ")" + vbCrLf
                Next
            End If
        ElseIf (e.NewSelectedHolidays.Count > 0) Then

            '	そうでない場合、既存の休日の選択が解除されます
            info += "The following Holidays have been removed from the selection:" + vbCrLf + vbCrLf

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

                        '	既存の休日が SelectedHolidays コレクションに存在する場合、
                        '	NewSelectedHolidays コレクションにない場合、選択は解除されます
                        info += oldHoliday.Name + " ("
                        info += oldHoliday.StartDate.ToLongDateString() + ")" + vbCrLf
                    End If
                Next

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



            info += vbCrLf + vbCrLf + "Continue?"

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

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

    End Sub
private void ultraCalendarInfo1_BeforeSelectedHolidaysChange(object sender, Infragistics.Win.UltraWinSchedule.BeforeSelectedHolidaysEventArgs e)
{		

	//----------------------------------------------------------------------------------------------------
	//	説明
	//	BeforeSelectedHolidaysChange
	//
	//	1 つ以上の Holiday が選択または選択解除された後に発生します
	//
	//----------------------------------------------------------------------------------------------------

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

		if ( this.ultraCalendarInfo1.SelectedHolidays.Count > 0 )
		{
			//	NewSelectedHolidays コレクションを繰り返し、
			//	各新しい選択についての情報を取得します
			foreach( Holiday newHoliday in e.NewSelectedHolidays )
			{
				//	既存の選択された休日を繰り返し、コレクションに追加した新しい休日を
				//	決定します
				foreach( Holiday oldHoliday in this.ultraCalendarInfo1.SelectedHolidays )
				{
					if ( newHoliday == oldHoliday )
						continue;
					else
					{
						//	既存の休日が SelectedHolidays コレクションに存在する場合、
						//	ユーザーの新しい休日として表示されません
						info += newHoliday.Name + " (";
						info += newHoliday.StartDate.ToLongDateString() + ")" + "\n";
					}
				}
				
			}
		}
		else
		{
			//	SelectedHolidays コレクションのカウントが 0 の場合、
			//	存在するかどうかを確認する必要がないため、すべてを表示します
			foreach( Holiday newHoliday in e.NewSelectedHolidays )
			{
				info += newHoliday.Name + " (";
				info += newHoliday.StartDate.ToLongDateString() + ")" + "\n";
			}
		}
	}
	else
	if ( e.NewSelectedHolidays.Count > 0 )
	{
		//	そうでない場合、既存の休日の選択が解除されます
		info += "The following Holidays have been removed from the selection:" + "\n\n";

		//	既存の SelectedHolidays コレクションを繰り返し、
		//	各解除されている選択についての情報を取得します
		foreach( Holiday oldHoliday in this.ultraCalendarInfo1.SelectedHolidays )
		{
			//	既存の選択された休日を繰り返し、コレクションに追加した新しい休日を
			//	決定します
			foreach( Holiday newHoliday in e.NewSelectedHolidays )
			{
				if ( newHoliday == oldHoliday )
					continue;
				else
				{
					//	既存の休日が SelectedHolidays コレクションに存在する場合、
					//	NewSelectedHolidays コレクションにない場合、選択は解除されました
					info += newHoliday.Name + " (";
					info += newHoliday.StartDate.ToLongDateString() + ")" + "\n";
				}

			}
			
		}
	}
	else
	{
		//	選択がクリアされました
		info += "The SelectedHolidays collection is about to be cleared." + "\n";

	}

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

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

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