Version

MaxAlternateSelectedDays Property

Returns or sets the maximum number of days that can be selected at any one time for UltraScheduleControlBase-derived controls whose UltraScheduleControlBase.UseAlternateSelectedDateRanges property is set to true.
Syntax
'Declaration
 
Public Property MaxAlternateSelectedDays As Integer
public int MaxAlternateSelectedDays {get; set;}
Remarks

The actual number of Day objects that can be selected may be less depending on the value of the AlternateSelectTypeDay property. For example, if AlternateSelectTypeDay is set to SelectTypeSingle, only one day may be selected at a time.

This property cannot be modified while the BeforeAlternateSelectedDateRangeChange event is in progress.

Example
The following code sample demonstrates how the AlternateSelectedDateRanges collection can be used to allow an UltraWinSchedule control that is associated with the same UltraCalendarInfo component as other UltraWinSchedule controls to have date selections that are independent of the other controls.

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;
		}
Requirements

Target Platforms: Windows 10, Windows 8.1, Windows 8, Windows 7, Windows Server 2012, Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also