Back to Devexpress

RangeControlAdjustEventArgs Class

corelibraries-devexpress-dot-xtrascheduler-1b5f6719.md

latest8.5 KB
Original Source

RangeControlAdjustEventArgs Class

Provides data for the SchedulerControl.RangeControlAutoAdjusting event.

Namespace : DevExpress.XtraScheduler

Assembly : DevExpress.XtraScheduler.v25.2.Core.Desktop.dll

NuGet Package : DevExpress.Scheduler.CoreDesktop

Declaration

csharp
public class RangeControlAdjustEventArgs :
    EventArgs
vb
Public Class RangeControlAdjustEventArgs
    Inherits EventArgs

RangeControlAdjustEventArgs is the data class for the following events:

Remarks

The SchedulerControl.RangeControlAutoAdjusting event occurs before the RangeControl’s scales and range are changed to automatically adjust the RangeControl when an active view or start date of the bound SchedulerControl is changed. The RangeControlAdjustEventArgs class introduces the RangeControlAdjustEventArgs.Scales property that specifies a set of scales that are visible in the RangeControl. The RangeControlAdjustEventArgs.RangeMinimum and RangeControlAdjustEventArgs.RangeMaximum properties specify boundaries of the time range to be available in the RangeControl.

An instance of the RangeControlAdjustEventArgs class with appropriate settings is automatically created and passed to the corresponding event’s handler.

Example

This example demonstrates how to customize the auto-adjusting settings before they are applied to the RangeControl when an end-user switches the scheduler to the Work-Week or Month view.

  1. Set the SchedulerOptionsRangeControl.AutoAdjustMode option to true.
  2. Handle the SchedulerControl.RangeControlAutoAdjusting event. In this event handler, specify the RangeControl scales and range to be set when the Work-Week or Month view becomes active in the following way:
csharp
using System;
using System.Windows.Forms;
using DevExpress.XtraScheduler;
using DevExpress.XtraScheduler.Native;

namespace WindowsFormsApplication1 {
    public partial class Form1 : Form {
        public Form1() {
            InitializeComponent();
        }

        private void schedulerControl1_RangeControlAutoAdjusting(object sender,
                                                                RangeControlAdjustEventArgs e) {
            schedulerControl.OptionsRangeControl.AutoFormatScaleCaptions = true;
            SchedulerViewType activeViewType = schedulerControl.ActiveViewType;

            if (activeViewType == SchedulerViewType.WorkWeek) {
                schedulerControl.OptionsRangeControl.AutoFormatScaleCaptions = false;
                e.Scales[4].DisplayFormat = "dddd";
                e.Scales[4].Width = 70;
            }

            if (activeViewType == SchedulerViewType.Month) {
                schedulerControl.OptionsRangeControl.AutoFormatScaleCaptions = false;

                e.Scales.Clear();

                TimeScaleMonth monthScale = new TimeScaleMonth();
                monthScale.DisplayFormat = "MMMM yyyy";
                e.Scales.Add(monthScale);

                TwoWeekTimeScale twoWeekTimeScale = new TwoWeekTimeScale();
                twoWeekTimeScale.Width = 120;
                e.Scales.Add(twoWeekTimeScale);

                e.RangeMinimum = new DateTime(e.RangeMinimum.Year, 1, 1);
                e.RangeMaximum = e.RangeMinimum.AddYears(1);
            }
        }
    }

    public class TwoWeekTimeScale : TimeScaleFixedInterval {
        public TwoWeekTimeScale()
            : base(TimeSpan.FromDays(14)) {
        }
        public override DateTime Floor(DateTime date) {
            DateTime startOfWeeek = DateTimeHelper.GetStartOfWeekUI(date,
                                                                    DateTimeHelper.FirstDayOfWeek);
            if (DateTimeHelper.GetWeekOfYear(date) % 2 == 0)
                return startOfWeeek.AddDays(-7);

            return startOfWeeek;
        }
        public override string FormatCaption(DateTime start, DateTime end) {
            string dateString = "Week {0} - Week {1}";
            return String.Format(dateString, DateTimeHelper.GetWeekOfYear(start),
                                 DateTimeHelper.GetWeekOfYear(end.AddTicks(-1)));
        }
    }
}
vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Windows.Forms
Imports DevExpress.XtraScheduler
Imports DevExpress.XtraScheduler.Native

Namespace WindowsFormsApplication1
    Partial Public Class Form1
        Inherits Form
        Public Sub New()
            InitializeComponent()
        End Sub

        Private Sub schedulerControl1_RangeControlAutoAdjusting(ByVal sender As Object, _
                                                                ByVal e As RangeControlAdjustEventArgs) _
                                                            Handles schedulerControl.RangeControlAutoAdjusting
            schedulerControl.OptionsRangeControl.AutoFormatScaleCaptions = True
            Dim activeViewType As SchedulerViewType = schedulerControl.ActiveViewType

            If activeViewType = SchedulerViewType.WorkWeek Then
                schedulerControl.OptionsRangeControl.AutoFormatScaleCaptions = False
                e.Scales(4).DisplayFormat = "dddd"
                e.Scales(4).Width = 70
            End If

            If activeViewType = SchedulerViewType.Month Then
                schedulerControl.OptionsRangeControl.AutoFormatScaleCaptions = False

                e.Scales.Clear()

                Dim monthScale As New TimeScaleMonth()
                monthScale.DisplayFormat = "MMMM yyyy"
                e.Scales.Add(monthScale)

                Dim twoWeekTimeScale As New TwoWeekTimeScale()
                twoWeekTimeScale.Width = 120
                e.Scales.Add(twoWeekTimeScale)

                e.RangeMinimum = New DateTime(e.RangeMinimum.Year, 1, 1)
                e.RangeMaximum = e.RangeMinimum.AddYears(1)
            End If
        End Sub
    End Class

    Public Class TwoWeekTimeScale
        Inherits TimeScaleFixedInterval
        Public Sub New()
            MyBase.New(TimeSpan.FromDays(14))
        End Sub
        Public Overrides Overloads Function Floor(ByVal [date] As DateTime) As DateTime
            Dim startOfWeeek As DateTime = DateTimeHelper.GetStartOfWeekUI([date], DateTimeHelper.FirstDayOfWeek)
            If DateTimeHelper.GetWeekOfYear([date]) Mod 2 = 0 Then
                Return startOfWeeek.AddDays(-7)
            End If

            Return startOfWeeek
        End Function
        Public Overrides Function FormatCaption(ByVal start As DateTime, ByVal [end] As DateTime) As String
            Dim dateString As String = "Week {0} - Week {1}"
            Return String.Format(dateString, DateTimeHelper.GetWeekOfYear(start), _
                                 DateTimeHelper.GetWeekOfYear([end].AddTicks(-1)))
        End Function
    End Class
End Namespace

Inheritance

Object EventArgs RangeControlAdjustEventArgs

See Also

RangeControlAdjustEventArgs Members

DevExpress.XtraScheduler Namespace