'宣言 Public Delegate Sub BeforeSelectedHolidaysChangeEventHandler( _ ByVal sender As Object, _ ByVal e As BeforeSelectedHolidaysEventArgs _ )
public delegate void BeforeSelectedHolidaysChangeEventHandler( object sender, BeforeSelectedHolidaysEventArgs e )
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; }