バージョン

ScrollDayIntoView(DateTime,Boolean) メソッド

渡された日付を表示領域にスクロールします。すでに表示されている場合、このメソッドは何も行わずに戻ります。表示されていない場合は、渡された日付を含む Week が、最初または最後の Week の位置に表示されます。
シンタックス
'宣言
 
Public Overloads Sub ScrollDayIntoView( _
   ByVal date As Date, _
   ByVal firstVisibleWeek As Boolean _
) 
public void ScrollDayIntoView( 
   DateTime date,
   bool firstVisibleWeek
)

パラメータ

date
スクロールして表示される日付。
firstVisibleWeek
Trueの時、スクロールして表示される日が最初の表示される週に表示されることを保証します。
解説

このオーバー読み込みを使用して、firstVisibleWeek パラメーターを True に設定することによって、指定された Day が最初の表示される Week に表示されることを保証します。

使用例
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;

			}

		}
参照