Version

AlternateSelectedDateRanges Property

Collection that holds DateRange objects representing a range of days that are currently selected. Used by UltraScheduleControlBase-derived controls whose UltraScheduleControlBase.UseAlternateSelectedDateRanges property is set to true.
Syntax
'Declaration
 
Public ReadOnly Property AlternateSelectedDateRanges As SelectedDateRanges
public SelectedDateRanges AlternateSelectedDateRanges {get;}
Remarks

This selection list is separate from and unrelated to the list returned by the SelectedDateRanges property. Controls whose UseAlternateSelectedDateRanges property is set to true will use this selection list instead of the one returned by the SelectedDateRanges property. The AlternateSelectedDateRanges property makes it possible for a control to share all other information provided by its associated UltraCalendarInfo component, while maintaining a separate set of selected days.

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