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