UltraMonthViewSingle コントロールは、DayOfWeek ヘッダーがクリックされた時にイベントを発生させます (DayOfWeekHeadersVisible を参照してください)。
Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Imports Infragistics.Win.UltraWinSchedule.MonthViewSingle Private Sub OptimizeControlForAppointmentDisplay() Dim yesterday As DateTime = DateTime.Today.AddDays(-1) Dim today As DateTime = DateTime.Today Dim tomorrow As DateTime = DateTime.Today.AddDays(1) Dim i As Integer ' アクティビティを追加します ' 予定の追加 If Me.ultraMonthViewSingle1.CalendarInfo.Appointments.Count = 0 Then For i = 1 To 5 Me.ultraMonthViewSingle1.CalendarInfo.Appointments.Add(yesterday, "Yesterday's appointment " + i.ToString()) Next For i = 1 To 3 Me.ultraMonthViewSingle1.CalendarInfo.Appointments.Add(today, "Today's appointment " + i.ToString()) Next For i = 1 To 10 Me.ultraMonthViewSingle1.CalendarInfo.Appointments.Add(tomorrow, "Tomorrow's appointment " + i.ToString()) Next End If ' メモの追加 If Me.ultraMonthViewSingle1.CalendarInfo.Notes.Count = 0 Then Me.ultraMonthViewSingle1.CalendarInfo.Notes.Add(yesterday, "Yesterday's note " + i.ToString()) For i = 1 To 2 Me.ultraMonthViewSingle1.CalendarInfo.Notes.Add(today, "Today's note " + i.ToString()) Next For i = 1 To 5 Me.ultraMonthViewSingle1.CalendarInfo.Notes.Add(tomorrow, "Tomorrow's note " + i.ToString()) Next End If ' 休日の追加 If Me.ultraMonthViewSingle1.CalendarInfo.Holidays.Count = 0 Then Me.ultraMonthViewSingle1.CalendarInfo.Holidays.Add(yesterday, "My 2-day Holiday") End If ' 最もアクティビティがある日を決定しますStartDateTime プロパティにあるすべての予定の特定の日付の発生を ' カウントし、発生の最大数を決定します Dim dateWithMostActivity As DateTime = DateTime.Today Dim count As Integer = 0 Dim tempCount As Integer = 0 Dim outer As Appointment Dim inner As Appointment For Each outer In Me.ultraMonthViewSingle1.CalendarInfo.Appointments tempCount = 0 For Each inner In Me.ultraMonthViewSingle1.CalendarInfo.Appointments If inner.StartDateTime.Date = outer.StartDateTime Then tempCount += 1 Next ' 以前の日付よりこの日付に予定が多くある場合、 ' カウントを変更し、新しい dateWithMostActivity を設定します If tempCount > count Then count = tempCount dateWithMostActivity = outer.StartDateTime End If Next ' 予定がない場合、何もせずに返します If count = 0 Then Return ' CalendarInfo オブジェクトの FirstDayOfWeek プロパティを ' 最も予定がある曜日に設定します Me.ultraMonthViewSingle1.CalendarInfo.FirstDayOfWeek = dateWithMostActivity.DayOfWeek ' 表示する曜日以外のすべての DayOfWeek オブジェクトの Visible プロパティを ' False に設定します Dim dow As Infragistics.Win.UltraWinSchedule.DayOfWeek For Each dow In Me.ultraMonthViewSingle1.CalendarInfo.DaysOfWeek If dow.DayOfTheWeek <> dateWithMostActivity.DayOfWeek Then dow.Visible = False Else dow.Visible = True Next ' 最もアクティビティがある日のみを表示するには、 ' VisibleWeeks プロパティを 1 に設定します Me.ultraMonthViewSingle1.VisibleWeeks = 1 ' CalendarInfo オブジェクトの ActiveDay プロパティを ' 最もアクティビティがある日に設定します Me.ultraMonthViewSingle1.CalendarInfo.ActiveDay = Me.ultraMonthViewSingle1.CalendarInfo.GetDay(dateWithMostActivity, True) ' その日をビューへ移動して表示します Me.ultraMonthViewSingle1.ScrollDayIntoView(dateWithMostActivity, True) ' コントロールで予定の表示を最適化するために、 ' コントロールの ActivityDisplayStyle プロパティを設定すると、 ' 他のアクティビティ (メモおよび休日) は表されません Me.ultraMonthViewSingle1.ActivityDisplayStyle = ActivityDisplayStyleEnum.Appointments ' 表示を更新するには、すべての UIElements をダーティして確認します Me.ultraMonthViewSingle1.UIElement.DirtyChildElements() Me.ultraMonthViewSingle1.UIElement.VerifyChildElements() ' 最もアクティビティがある日と関連付ける UIElement を取得しますMoreActivityIndicatorVisible プロパティを使用すると、 ' 表示されていない予定があるかどうかを決定します存在する場合、DayOfWeekHeadersVisible プロパティを False に設定すると、 ' 予定を表示するスペースを少し増やしますActiveDay を最も予定がある日に設定すると、GetDescendant メソッドで ' ActiveDay を 'context' パラメーターとして使用できることに注意してください Dim dayUI As Infragistics.Win.UltraWinSchedule.MonthViewSingle.DayUIElement = Me.ultraMonthViewSingle1.UIElement.GetDescendant(GetType(DayUIElement), Me.ultraMonthViewSingle1.CalendarInfo.ActiveDay) If Not dayUI Is Nothing And dayUI.MoreActivityIndicatorVisible Then Me.ultraMonthViewSingle1.DayOfWeekHeadersVisible = False ' DayOfWeek ヘッダーを非表示にしているため曜日の名前が ' 表示されていないので、日ヘッダーに名前を表示されるために ' DayDisplayStyle プロパティを Full に設定します Me.ultraMonthViewSingle1.DayDisplayStyle = DayDisplayStyleEnum.Full End If End Sub
using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; using Infragistics.Win.UltraWinSchedule.MonthViewSingle; using System.Diagnostics; private void OptimizeControlForAppointmentDisplay() { // 日付変数を宣言します DateTime yesterday = DateTime.Today.AddDays( -1.0F ); DateTime today = DateTime.Today; DateTime tomorrow = DateTime.Today.AddDays( 1.0F ); // アクティビティを追加します // 予定の追加 if ( this.ultraMonthViewSingle1.CalendarInfo.Appointments.Count == 0 ) { for ( int i = 1; i <= 5; i ++ ) this.ultraMonthViewSingle1.CalendarInfo.Appointments.Add(yesterday, "Yesterday's appointment " + i.ToString() ); for ( int i = 1; i <= 3; i ++ ) this.ultraMonthViewSingle1.CalendarInfo.Appointments.Add(today, "Today's appointment " + i.ToString() ); for ( int i = 1; i <= 10; i ++ ) this.ultraMonthViewSingle1.CalendarInfo.Appointments.Add(tomorrow, "Tomorrow's appointment " + i.ToString() ); } // メモの追加 if ( this.ultraMonthViewSingle1.CalendarInfo.Notes.Count == 0 ) { for ( int i = 1; i <= 1; i ++ ) this.ultraMonthViewSingle1.CalendarInfo.Notes.Add(yesterday, "Yesterday's note " + i.ToString() ); for ( int i = 1; i <= 2; i ++ ) this.ultraMonthViewSingle1.CalendarInfo.Notes.Add(today, "Today's note " + i.ToString() ); for ( int i = 1; i <= 5; i ++ ) this.ultraMonthViewSingle1.CalendarInfo.Notes.Add(tomorrow, "Tomorrow's note " + i.ToString() ); } // 休日の追加 if ( this.ultraMonthViewSingle1.CalendarInfo.Holidays.Count == 0 ) this.ultraMonthViewSingle1.CalendarInfo.Holidays.Add(yesterday, "My 2-day Holiday" ); // 最もアクティビティがある日を決定します // すべての予定の StartDateTime プロパティにある特定の日付の発生を // カウントし、発生の最大数を // 決定します // DateTime dateWithMostActivity = DateTime.Today; int count = 0, tempCount = 0; foreach( Appointment outer in this.ultraMonthViewSingle1.CalendarInfo.Appointments ) { tempCount = 0; foreach( Appointment inner in this.ultraMonthViewSingle1.CalendarInfo.Appointments ) { if ( inner.StartDateTime.Date == outer.StartDateTime.Date ) tempCount++; } // 以前の日付よりこの日付に予定が多くある場合、 // カウントを変更し、新しい dateWithMostActivity を設定します if ( tempCount > count ) { count = tempCount; dateWithMostActivity = outer.StartDateTime; } } // 予定がない場合、何もせずに返します if ( count == 0 ) return; // CalendarInfo オブジェクトの FirstDayOfWeek プロパティを // 最も予定がある曜日に設定します this.ultraMonthViewSingle1.CalendarInfo.FirstDayOfWeek = (FirstDayOfWeek)( dateWithMostActivity.DayOfWeek ); // 表示する曜日以外のすべての DayOfWeek オブジェクトの Visible プロパティを // False に設定します foreach( Infragistics.Win.UltraWinSchedule.DayOfWeek dow in this.ultraMonthViewSingle1.CalendarInfo.DaysOfWeek ) { if ( (int)(dow.DayOfTheWeek) != (int)(dateWithMostActivity.DayOfWeek) ) dow.Visible = false; else dow.Visible = true; } // 最もアクティビティがある日のみを表示するには、 // VisibleWeeks プロパティを 1 に設定します this.ultraMonthViewSingle1.VisibleWeeks = 1; // CalendarInfo オブジェクトの ActiveDay プロパティを // 最もアクティビティがある日に設定します this.ultraMonthViewSingle1.CalendarInfo.ActiveDay = this.ultraMonthViewSingle1.CalendarInfo.GetDay( dateWithMostActivity, true ); // その日をビューへ移動して表示します this.ultraMonthViewSingle1.ScrollDayIntoView( dateWithMostActivity, true ); // コントロールで予定の表示を最適化するために、 // コントロールの ActivityDisplayStyle プロパティを設定すると、 // 他のアクティビティ (メモおよび休日) は表されません this.ultraMonthViewSingle1.ActivityDisplayStyle = ActivityDisplayStyleEnum.Appointments; // 表示を更新するには、すべての UIElements をダーティして確認します this.ultraMonthViewSingle1.UIElement.DirtyChildElements(); this.ultraMonthViewSingle1.UIElement.VerifyChildElements(); // アクティビティの最大数がある日と関連付ける UIElement を // 取得しますMoreActivityIndicatorVisible プロパティを使用すると、 // 表示されていない予定がある // かどうかを決定します存在する場合、 // DayOfWeekHeadersVisible プロパティを False に設定すると、 // 予定を表示するスペースを少し増やします // // ActiveDay を最も予定がある日に設定したため、 // GetDescendant メソッドで // ActiveDay を 'context' パラメーターとして使用できることに注意してください DayUIElement dayUI = this.ultraMonthViewSingle1.UIElement.GetDescendant( typeof(DayUIElement), this.ultraMonthViewSingle1.CalendarInfo.ActiveDay ) as DayUIElement; if ( dayUI != null && dayUI.MoreActivityIndicatorVisible ) { this.ultraMonthViewSingle1.DayOfWeekHeadersVisible = false; // DayOfWeek ヘッダーを非表示にするため、曜日の名前が // 表示されていないので、名前を日ヘッダーに表示するために // DayDisplayStyle プロパティを Full に設定します this.ultraMonthViewSingle1.DayDisplayStyle = DayDisplayStyleEnum.Full; } }