corelibraries-devexpress-dot-xtrascheduler-1b5f6719.md
Provides data for the SchedulerControl.RangeControlAutoAdjusting event.
Namespace : DevExpress.XtraScheduler
Assembly : DevExpress.XtraScheduler.v25.2.Core.Desktop.dll
NuGet Package : DevExpress.Scheduler.CoreDesktop
public class RangeControlAdjustEventArgs :
EventArgs
Public Class RangeControlAdjustEventArgs
Inherits EventArgs
RangeControlAdjustEventArgs is the data class for the following events:
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.
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.
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)));
}
}
}
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
Object EventArgs RangeControlAdjustEventArgs
See Also