FirstVisibleDay プロパティはランタイムに限って使用でき、読み取り専用です。コントロールの現在の一番上の左の日を表す Day オブジェクトを返すために役に立ちます。
Imports Infragistics.Win Imports Infragistics.Win.UltraWinSchedule Imports Infragistics.Win.UltraWinSchedule.WeekView 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.ultraWeekView.CalendarInfo.Appointments.Count = 0 Then For i = 1 To 5 Me.ultraWeekView.CalendarInfo.Appointments.Add(yesterday, "Yesterday's appointment " + i.ToString()) Next For i = 1 To 3 Me.ultraWeekView.CalendarInfo.Appointments.Add(today, "Today's appointment " + i.ToString()) Next For i = 1 To 10 Me.ultraWeekView.CalendarInfo.Appointments.Add(tomorrow, "Tomorrow's appointment " + i.ToString()) Next End If ' メモの追加 If Me.ultraWeekView.CalendarInfo.Notes.Count = 0 Then Me.ultraWeekView.CalendarInfo.Notes.Add(yesterday, "Yesterday's note " + i.ToString()) For i = 1 To 2 Me.ultraWeekView.CalendarInfo.Notes.Add(today, "Today's note " + i.ToString()) Next For i = 1 To 5 Me.ultraWeekView.CalendarInfo.Notes.Add(tomorrow, "Tomorrow's note " + i.ToString()) Next End If ' 休日の追加 If Me.ultraWeekView.CalendarInfo.Holidays.Count = 0 Then Me.ultraWeekView.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.ultraWeekView.CalendarInfo.Appointments tempCount = 0 For Each inner In Me.ultraWeekView.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.ultraWeekView.CalendarInfo.FirstDayOfWeek = dateWithMostActivity.DayOfWeek ' 表示する曜日以外のすべての DayOfWeek オブジェクトの Visible プロパティを ' False に設定します Dim dow As Infragistics.Win.UltraWinSchedule.DayOfWeek For Each dow In Me.ultraWeekView.CalendarInfo.DaysOfWeek If dow.DayOfTheWeek <> dateWithMostActivity.DayOfWeek Then dow.Visible = False Else dow.Visible = True Next ' CalendarInfo オブジェクトの ActiveDay プロパティを ' 最もアクティビティがある日に設定します Me.ultraWeekView.CalendarInfo.ActiveDay = Me.ultraWeekView.CalendarInfo.GetDay(dateWithMostActivity, True) ' その日をビューへ移動して表示します Me.ultraWeekView.ScrollDayIntoView(dateWithMostActivity) ' コントロールで予定の表示を最適化するために、 ' コントロールの ActivityDisplayStyle プロパティを設定すると、 ' 他のアクティビティ (メモおよび休日) は表されません Me.ultraWeekView.ActivityDisplayStyle = ActivityDisplayStyleEnum.Appointments ' 表示を更新するには、すべての UIElements をダーティして確認します Me.ultraWeekView.UIElement.DirtyChildElements() Me.ultraWeekView.UIElement.VerifyChildElements() ' DayDisplayStyle プロパティを Full に設定します Me.ultraWeekView.DayDisplayStyle = DayDisplayStyleEnum.Full End Sub
using Infragistics.Win; using Infragistics.Win.UltraWinSchedule; using Infragistics.Win.UltraWinSchedule.WeekView; 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.ultraWeekView.CalendarInfo.Appointments.Count == 0 ) { for ( int i = 1; i <= 5; i ++ ) this.ultraWeekView.CalendarInfo.Appointments.Add(yesterday, "Yesterday's appointment " + i.ToString() ); for ( int i = 1; i <= 3; i ++ ) this.ultraWeekView.CalendarInfo.Appointments.Add(today, "Today's appointment " + i.ToString() ); for ( int i = 1; i <= 10; i ++ ) this.ultraWeekView.CalendarInfo.Appointments.Add(tomorrow, "Tomorrow's appointment " + i.ToString() ); } // メモの追加 if ( this.ultraWeekView.CalendarInfo.Notes.Count == 0 ) { for ( int i = 1; i <= 1; i ++ ) this.ultraWeekView.CalendarInfo.Notes.Add(yesterday, "Yesterday's note " + i.ToString() ); for ( int i = 1; i <= 2; i ++ ) this.ultraWeekView.CalendarInfo.Notes.Add(today, "Today's note " + i.ToString() ); for ( int i = 1; i <= 5; i ++ ) this.ultraWeekView.CalendarInfo.Notes.Add(tomorrow, "Tomorrow's note " + i.ToString() ); } // 休日の追加 if ( this.ultraWeekView.CalendarInfo.Holidays.Count == 0 ) this.ultraWeekView.CalendarInfo.Holidays.Add(yesterday, "My 2-day Holiday" ); // 最もアクティビティがある日を決定します // すべての予定の StartDateTime プロパティにある特定の日付の発生を // カウントし、最も発生が多い日を // トラックします。 // DateTime dateWithMostActivity = DateTime.Today; int count = 0, tempCount = 0; foreach( Appointment outer in this.ultraWeekView.CalendarInfo.Appointments ) { tempCount = 0; foreach( Appointment inner in this.ultraWeekView.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.ultraWeekView.CalendarInfo.FirstDayOfWeek = (FirstDayOfWeek)( dateWithMostActivity.DayOfWeek ); // 表示する曜日以外のすべての DayOfWeek オブジェクトの Visible プロパティを // False に設定します foreach( Infragistics.Win.UltraWinSchedule.DayOfWeek dow in this.ultraWeekView.CalendarInfo.DaysOfWeek ) { if ( (int)(dow.DayOfTheWeek) != (int)(dateWithMostActivity.DayOfWeek) ) dow.Visible = false; else dow.Visible = true; } // CalendarInfo オブジェクトの ActiveDay プロパティを // 最もアクティビティがある日に設定します this.ultraWeekView.CalendarInfo.ActiveDay = this.ultraWeekView.CalendarInfo.GetDay( dateWithMostActivity, true ); // その日をビューへ移動して表示します this.ultraWeekView.ScrollDayIntoView( dateWithMostActivity ); // コントロールで予定の表示を最適化するために、 // コントロールの ActivityDisplayStyle プロパティを設定すると、 // 他のアクティビティ (メモおよび休日) は表されません this.ultraWeekView.ActivityDisplayStyle = ActivityDisplayStyleEnum.Appointments; // 表示を更新するには、すべての UIElements をダーティして確認します this.ultraWeekView.UIElement.DirtyChildElements(); this.ultraWeekView.UIElement.VerifyChildElements(); // DayDisplayStyle プロパティを Full に設定します this.ultraWeekView.DayDisplayStyle = DayDisplayStyleEnum.Full; }