New to Telerik UI for WinFormsStart a free 30-day trial

Scheduler Element Provider

Updated over 6 months ago

The SchedulerElementProvider class provides means for changing the default RadScheduler elements.

Figure 1: Custom Appointments

WinForms RadScheduler Custom Appointments

If you need to customize any of the RadSheduler elements you can use the SchedulerElementProvider class. It allows you to replace the default elements with custom ones. This can be achieved by creating SchedulerElementProvider descendant class and overriding the corresponding methods.

Custom Element Provider

C#
public class MyElementProvider : SchedulerElementProvider
{
    public MyElementProvider(RadScheduler scheduler)
        : base(scheduler)
    {
    }
    protected override T CreateElement<T>(SchedulerView view, object context)
    {
        if (typeof(T) == typeof(AppointmentElement))
        {
            return new MyAppointmentElement(this.Scheduler, view, (IEvent)context) as T;
        }
        if (typeof(T) == typeof(SchedulerCellElement))
        {
            return new MySchedulerCellElement(this.Scheduler, view) as T;
        }
        return base.CreateElement<T>(view, context);
    }
    public override RulerPrimitive CreateRulerPrimitive(DayViewAppointmentsArea area, SchedulerTimeZone timeZone)
    {
        return new MyRulerPrimitive(this.Scheduler, area);
    }
}

Your custom elements should be inherit of the default ones. For example, you can create custom elements and override some of their default properties.

Custom Cells

C#
public class MySchedulerCellElement : SchedulerCellElement
{
    public MySchedulerCellElement(RadScheduler scheduler, SchedulerView view)
        : base(scheduler, view)
    {
    }
    protected override void InitializeFields()
    {
        base.InitializeFields();
        this.BorderWidth = 2;
        this.BackColor = ColorTranslator.FromHtml("#f5e020");
        this.Text = "Text";
    }
}
public class MyAppointmentElement : AppointmentElement
{
    public MyAppointmentElement(RadScheduler scheduler, SchedulerView view, IEvent appointment)
        : base(scheduler, view, appointment)
    {
    }
    protected override void InitializeAppointment()
    {
        base.InitializeAppointment();
        this.BackColor = ColorTranslator.FromHtml("#91c930");
        this.BackColor2 = ColorTranslator.FromHtml("#51ab2e");
        this.SelectedBorderColor = ColorTranslator.FromHtml("#005Bbc");
    }
}
public class MyRulerPrimitive : RulerPrimitive
{
    public MyRulerPrimitive(RadScheduler scheduler, DayViewAppointmentsArea area)
        : base(scheduler, area)
    {
        this.BackColor = ColorTranslator.FromHtml("#91c930");
        this.Font = new Font("Segoe Script", 12, FontStyle.Underline);
        this.ForeColor = ColorTranslator.FromHtml("#bb2525");
    }
}

The following RadSheduler elements can be substituted in the CreateElement method.

Scheduler Element
AppointmentElement
DayViewAllDayHeader
DayViewAppointmentsArea
DayViewAppointmentsTable
DayViewHeader
DragFeedbackElement
MonthCellElement
MonthViewAreaElement
MonthViewHeader
MonthViewVerticalHeader
SchedulerCellElement
SchedulerDayViewElement
SchedulerDayViewGroupedByResourceElement
SchedulerHeaderCellElement
SchedulerMonthViewElement
SchedulerMonthViewGroupedByResourceElement
SchedulerMultiDayViewElement
SchedulerResourceHeaderCellElement
SchedulerTimelineViewElement
TimelineAppointmentsPresenter
TimelineGroupingByResourcesElement
TimelineHeader
ViewNavigationElement

See Also

In this article
See Also
Not finding the help you need?
Contact Support