'宣言 Public ReadOnly Property NewSelectedNotes As SelectedNotesCollection
public SelectedNotesCollection NewSelectedNotes {get;}
選択変更が実際に行われる前にこのイベントが発生しているため、発生した変更を確認するために、このプロパティによって返されるコレクションの内容を UltraCalendarInfo.SelectedNotes プロパティと比較することができます。
Imports Infragistics.Shared Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Imports System.Diagnostics Private Sub ultraCalendarInfo1_BeforeSelectedNotesChange(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinSchedule.BeforeSelectedNotesEventArgs) Handles ultraCalendarInfo1.BeforeSelectedNotesChange '---------------------------------------------------------------------------------------------------- ' 説明 ' BeforeSelectedNotesChange ' ' 1 つ以上の Note が選択または選択解除された後に発生します ' '---------------------------------------------------------------------------------------------------- ' NewSelectedNotes コレクションのカウントは既存の ' SelectedNotes コレクションのカウントより大きいの場合、 ' 新しいメモが選択されました Dim info As String = String.Empty If (e.NewSelectedNotes.Count > Me.ultraCalendarInfo1.SelectedNotes.Count) Then info += "The following Notes have been added to the selection:" + vbCrLf + vbCrLf If (Me.ultraCalendarInfo1.SelectedNotes.Count > 0) Then ' NewSelectedNotes コレクションを繰り返し、 ' 各の新しい選択についての情報を取得します Dim newNote As Note For Each newNote In e.NewSelectedNotes ' 既存の選択されるメモを繰り返し、コレクションに追加した新しいメモを ' 決定します Dim oldNote As Note For Each oldNote In Me.ultraCalendarInfo1.SelectedNotes If (newNote Is oldNote) Then Exit For Else ' 既存のメモは SelectedNotes コレクションに存在する場合、 ' ユーザーによって新しくないため、新しいとして表示しません info += newNote.Description + " (" info += newNote.Date.ToLongDateString() + ")" + vbCrLf End If Next Next Else ' SelectedNotes コレクションのカウントが 0 の場合、 ' 既に存在することを確認する必要がないため、すべてを表示します Dim newNote As Note For Each newNote In e.NewSelectedNotes ' 既存のメモが SelectedNotes コレクションに存在する場合、 ' NewSelectedNotes コレクションにない場合、選択解除されました info += newNote.Description + " (" info += newNote.Date.ToLongDateString() + ")" + vbCrLf Next End If ElseIf (e.NewSelectedNotes.Count > 0) Then ' そうでない場合、既存のメモの選択は解除されます info += "The following Notes have been removed from the selection:" + vbCrLf + vbCrLf ' 既存の SelectedNotes コレクションを繰り返し、 ' 各解除されている選択についての情報を取得します Dim oldNote As Note For Each oldNote In Me.ultraCalendarInfo1.SelectedNotes ' 既存の選択されているメモを繰り返し、コレクションに追加した新しいメモを ' 決定します Dim newNote As Note For Each newNote In e.NewSelectedNotes If (newNote Is oldNote) Then Exit For Else ' 既存のメモが SelectedNotes コレクションに存在し、 ' NewSelectedNotes コレクションには存在しない場合、選択は解除されます info += oldNote.Description + " (" info += oldNote.Date.ToLongDateString() + ")" + vbCrLf End If Next Next Else ' 選択がクリアされました info += "The SelectedNotes collection is about to be cleared." + vbCrLf info += vbCrLf + vbCrLf + "Continue?" ' エンド ユーザーに MessageBox を表示し、続行するかどうかを確認します Dim result As DialogResult = MessageBox.Show(info, "BeforeSelectedNotesChange", 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_BeforeSelectedNotesChange(object sender, Infragistics.Win.UltraWinSchedule.BeforeSelectedNotesEventArgs e) { //---------------------------------------------------------------------------------------------------- // 説明 // BeforeSelectedNotesChange // // 1 つ以上の Note が選択または選択解除された後に発生します // //---------------------------------------------------------------------------------------------------- // NewSelectedNotes コレクションのカウントが既存の // SelectedNotes コレクションのカウントより大きい場合、 // 新しいメモが選択されます string info = string.Empty; if ( e.NewSelectedNotes.Count > this.ultraCalendarInfo1.SelectedNotes.Count ) { info += "The following Notes have been added to the selection:" + "\n\n"; if ( this.ultraCalendarInfo1.SelectedNotes.Count > 0 ) { // NewSelectedNotes コレクションを繰り返し、 // 各新しい選択についての情報を取得します foreach( Note newNote in e.NewSelectedNotes ) { // 既存の選択されたメモを繰り返し、コレクションに追加した新しいメモを // 決定します foreach( Note oldNote in this.ultraCalendarInfo1.SelectedNotes ) { if ( newNote == oldNote ) continue; else { // 既存のメモが SelectedNotes コレクションに存在する場合、 // ユーザーによって新しくないため、新しいとして表示しません info += newNote.Description + " ("; info += newNote.Date.ToLongDateString() + ")" + "\n"; } } } } else { // SelectedNotes コレクションのカウントは 0 の場合、 // 既に存在することを確認する必要がないため、すべてを表示します foreach( Note newNote in e.NewSelectedNotes ) { info += newNote.Description + " ("; info += newNote.Date.ToLongDateString() + ")" + "\n"; } } } else if ( e.NewSelectedNotes.Count > 0 ) { // そうでない場合、既存のメモの選択は解除されます info += "The following Notes have been removed from the selection:" + "\n\n"; // 既存の SelectedNotes コレクションを繰り返し、 // 各解除されている選択についての情報を取得します foreach( Note oldNote in this.ultraCalendarInfo1.SelectedNotes ) { // 既存の選択されたメモを繰り返し、コレクションに追加した新しいメモを // 決定します foreach( Note newNote in e.NewSelectedNotes ) { if ( newNote == oldNote ) continue; else { // 既存のメモが SelectedNotes コレクションに依存する場合、 // NewSelectedNotes コレクションにない場合、選択解除されました info += newNote.Description + " ("; info += newNote.Date.ToLongDateString() + ")" + "\n"; } } } } else { // 選択がクリアされました info += "The SelectedNotes collection is about to be cleared." + "\n"; } info += "\n\n" + "Continue?"; // エンド ユーザーに MessageBox を表示し、続行するかどうかを確認します DialogResult result = MessageBox.Show( info, "BeforeSelectedNotesChange", MessageBoxButtons.YesNo ); // 続行しない場合、イベントをキャンセルします if ( result == DialogResult.No ) e.Cancel = true; }