バージョン

MaxAlternateSelectedDays プロパティ

UltraScheduleControlBase.UseAlternateSelectedDateRanges プロパティが True に設定されている UltraScheduleControlBase 派生コントロールにおいて、一度に選択可能な最大の日数を取得または設定します。
シンタックス
'宣言
 
Public Property MaxAlternateSelectedDays As Integer
public int MaxAlternateSelectedDays {get; set;}
解説

AlternateSelectTypeDay プロパティの値によっては、実際に選択できる Day オブジェクトの数が少なくなる場合があります。たとえば、AlternateSelectTypeDayが SelectTypeSingle に設定されると、一度に選択できるのは 1 日のみになります。

BeforeAlternateSelectedDateRangeChange イベントが処理中の間、このプロパティは変更できません。

使用例
Imports Infragistics.Win
Imports Infragistics.Win.UltraWinSchedule

    Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click

        '	Set the UltraMonthViewMulti control's UseAlternateSelectedDateRanges
        '	property to true so that when dates are selected, the UltraDayView,
        '	UltraWeekView, and UltraMonthViewSingle controls do NOT automatically
        '	reflect those changes.
        Me.ultraMonthViewMulti1.UseAlternateSelectedDateRanges = True

        '	Set the UltraCalendarInfo's AlternateSelectTypeDay property to 'Extended'
        '	so that multiple days can be selected in the alternate collection, and
        '	restrict the total number of days that can be selected in the alternate
        '	collection to 31.
        Me.ultraCalendarInfo1.AlternateSelectTypeDay = SelectType.Extended
        Me.ultraCalendarInfo1.MaxSelectedDays = 31
    End Sub

    Private Sub ultraCalendarInfo1_AfterAlternateSelectedDateRangeChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles ultraCalendarInfo1.AfterAlternateSelectedDateRangeChange

        '	Resume painting for the UltraDayView, UltraWeekView, and
        '	UltraMonthViewSingle controls.
        Me.ultraDayView1.EndUpdate()
        Me.ultraWeekView1.EndUpdate()
        Me.ultraMonthViewSingle1.EndUpdate()

        If (Me.ultraDayView1.Visible) Then
            Me.ultraDayView1.Refresh()
        ElseIf (Me.ultraWeekView1.Visible) Then
            Me.ultraWeekView1.Refresh()
        ElseIf (Me.ultraMonthViewSingle1.Visible) Then
            Me.ultraMonthViewSingle1.Refresh()
        End If

    End Sub

    Private Sub ultraCalendarInfo1_BeforeAlternateSelectedDateRangeChange(ByVal sender As Object, ByVal e As Infragistics.Win.UltraWinSchedule.BeforeSelectedDateRangeChangeEventArgs) Handles ultraCalendarInfo1.BeforeAlternateSelectedDateRangeChange

        Dim selection As SelectedDateRanges = e.NewSelectedDateRanges

        '	Get the total number of days that were selected.
        Dim totalDaysSelected As Integer = selection.SelectedDaysCount

        '	Return if nothing was selected.
        If totalDaysSelected = 0 Then Return

        '	Suspend painting for the UltraDayView, UltraWeekView, and
        '	UltraMonthViewSingle controls while we process the change
        '	in date selection.
        Me.ultraDayView1.BeginUpdate()
        Me.ultraWeekView1.BeginUpdate()
        Me.ultraMonthViewSingle1.BeginUpdate()

        '	Determine whether we have a discontiguous selection...since the
        '	AlternateSelectedDateRanges collection automatically handles
        '	defragmentation of contiguous selected days, the count of the collection
        '	will  only exceed one if all selected days cannot be expressed by one
        '	DateRange object.
        Dim isDiscontiguous As Boolean = selection.Count > 1

        '	Get the first and last dates in the date selection.
        Dim firstDateInSelection As DateTime = DateTime.MinValue
        Dim lastDateInSelection As DateTime = DateTime.MaxValue

        Dim i As Integer
        For i = 0 To selection.Count - 1

            Dim dateRange As DateRange = selection(i)

            If i = 0 Then firstDateInSelection = DateRange.StartDate

            If i = (selection.Count - 1) Then lastDateInSelection = dateRange.EndDate
        Next

        '	Determine whether the first day of the week is the first day in the selection
        Dim firstDayOfWeekBeginsSelection As Boolean = firstDateInSelection.DayOfWeek = Me.ultraCalendarInfo1.FirstDayOfWeek Or Me.ultraCalendarInfo1.FirstDayOfWeek = FirstDayOfWeek.Default

        '	Analyze the selection and determine which schedule control should be displayed.
        Dim controlToDisplay As UltraScheduleControlBase = Me.ultraMonthViewSingle1
        If totalDaysSelected <= 14 Then

            controlToDisplay = Me.ultraDayView1

            If firstDayOfWeekBeginsSelection Then
                If (totalDaysSelected = 7) Then controlToDisplay = Me.ultraWeekView1

                If (totalDaysSelected = 14) Then controlToDisplay = Me.ultraMonthViewSingle1
            End If

        End If

        If controlToDisplay Is Me.ultraMonthViewSingle1 Then
            Me.ultraMonthViewSingle1.VisibleWeeks = totalDaysSelected / 7
        ElseIf controlToDisplay Is Me.ultraDayView1 Then

            Me.ultraDayView1.CalendarInfo.SelectedDateRanges.Clear()

            For i = 0 To selection.Count - 1

                Dim dateRange As DateRange = selection(i)
                Me.ultraDayView1.CalendarInfo.SelectedDateRanges.Add(dateRange.StartDate, dateRange.EndDate)
            Next

        End If

        Me.DisplayScheduleControl(controlToDisplay)
    End Sub


    Private Sub DisplayScheduleControl(ByVal control As UltraScheduleControlBase)

        Me.ultraDayView1.Visible = False
        Me.ultraWeekView1.Visible = False
        Me.ultraMonthViewSingle1.Visible = False

        control.Visible = True
        control.Dock = DockStyle.Fill
    End Sub
using Infragistics.Win;
using Infragistics.Win.UltraWinSchedule;
using System.Diagnostics;

		private void button1_Click(object sender, System.EventArgs e)
		{
			//	Set the UltraMonthViewMulti control's UseAlternateSelectedDateRanges
			//	property to true so that when dates are selected, the UltraDayView,
			//	UltraWeekView, and UltraMonthViewSingle controls do NOT automatically
			//	reflect those changes.
			this.ultraMonthViewMulti1.UseAlternateSelectedDateRanges = true;

			//	Set the UltraCalendarInfo's AlternateSelectTypeDay property to 'Extended'
			//	so that multiple days can be selected in the alternate collection, and
			//	restrict the total number of days that can be selected in the alternate
			//	collection to 31.
			this.ultraCalendarInfo1.AlternateSelectTypeDay = SelectType.Extended;
			this.ultraCalendarInfo1.MaxSelectedDays = 31;
		}

		private void ultraCalendarInfo1_AfterAlternateSelectedDateRangeChange(object sender, System.EventArgs e)
		{
		
			//	Resume painting for the UltraDayView, UltraWeekView, and
			//	UltraMonthViewSingle controls.
			this.ultraDayView1.EndUpdate();
			this.ultraWeekView1.EndUpdate();
			this.ultraMonthViewSingle1.EndUpdate();

			if ( this.ultraDayView1.Visible )
				this.ultraDayView1.Refresh();
			else
			if ( this.ultraWeekView1.Visible )
				this.ultraWeekView1.Refresh();
			else
			if ( this.ultraMonthViewSingle1.Visible )
				this.ultraMonthViewSingle1.Refresh();

		}

		private void ultraCalendarInfo1_BeforeAlternateSelectedDateRangeChange(object sender, Infragistics.Win.UltraWinSchedule.BeforeSelectedDateRangeChangeEventArgs e)
		{
			SelectedDateRanges selection = e.NewSelectedDateRanges;

			//	Get the total number of days that were selected.
			int totalDaysSelected = selection.SelectedDaysCount;

			//	Return if nothing was selected.
			if ( totalDaysSelected == 0 )
				return;

			//	Suspend painting for the UltraDayView, UltraWeekView, and
			//	UltraMonthViewSingle controls while we process the change
			//	in date selection.
			this.ultraDayView1.BeginUpdate();
			this.ultraWeekView1.BeginUpdate();
			this.ultraMonthViewSingle1.BeginUpdate();

			//	Determine whether we have a discontiguous selection...since the
			//	AlternateSelectedDateRanges collection automatically handles
			//	defragmentation of contiguous selected days, the count of the collection
			//	will  only exceed one if all selected days cannot be expressed by one
			//	DateRange object.
			bool isDiscontiguous = selection.Count > 1;

			//	Get the first and last dates in the date selection.
			DateTime firstDateInSelection = DateTime.MinValue;
			DateTime lastDateInSelection = DateTime.MaxValue;

			for ( int i = 0; i < selection.Count; i ++ )
			{
				DateRange dateRange = selection[i];

				if ( i == 0 )
					firstDateInSelection = dateRange.StartDate;

				if ( i == (selection.Count - 1) )
					lastDateInSelection = dateRange.EndDate;
			}

			//	Determine whether the first day of the week is the first day in the selection
			bool firstDayOfWeekBeginsSelection = (	(int)firstDateInSelection.DayOfWeek == (int)this.ultraCalendarInfo1.FirstDayOfWeek ||
													this.ultraCalendarInfo1.FirstDayOfWeek == FirstDayOfWeek.Default );

			//	Analyze the selection and determine which schedule control should be displayed.
			UltraScheduleControlBase controlToDisplay = this.ultraMonthViewSingle1;
			if ( totalDaysSelected <= 14 )
			{
				controlToDisplay = this.ultraDayView1;

				if ( firstDayOfWeekBeginsSelection )
				{
					if ( totalDaysSelected == 7 )
						controlToDisplay = this.ultraWeekView1;
					else
					if ( totalDaysSelected == 14 )
						controlToDisplay = this.ultraMonthViewSingle1;
				}
			}

			if ( controlToDisplay == this.ultraMonthViewSingle1 )
				this.ultraMonthViewSingle1.VisibleWeeks = (int)(totalDaysSelected / 7);
			else
			if ( controlToDisplay == this.ultraDayView1 )
			{
				this.ultraDayView1.CalendarInfo.SelectedDateRanges.Clear();
				
				for ( int i = 0; i < selection.Count; i ++ )
				{
					DateRange dateRange = selection[i];
					this.ultraDayView1.CalendarInfo.SelectedDateRanges.Add( dateRange.StartDate, dateRange.EndDate );
				}
			}
				 
			this.DisplayScheduleControl( controlToDisplay );
		}

		private void DisplayScheduleControl( UltraScheduleControlBase control )
		{
			this.ultraDayView1.Visible = false;
			this.ultraWeekView1.Visible = false;
			this.ultraMonthViewSingle1.Visible = false;

			control.Visible = true;
			control.Dock = DockStyle.Fill;
		}
参照