I have a datetimepicker field where I want to change the background colour of special days.
I have set up event handlers for the clicking of the arrows but what event is fired when the user changes the month drop down on the picker.
My code as it stands is
public form1()
{
InitializeComponent();
RadDateTimePickerCalendar calendarBehavior = this.dtDOI.DateTimePickerElement.GetCurrentBehavior() as RadDateTimePickerCalendar;
calendar = calendarBehavior.Calendar as RadCalendar;
RadCalendarElement calendarElement = calendar.CalendarElement as RadCalendarElement;
MonthViewElement monthView = calendarBehavior.Calendar.CalendarElement.CalendarVisualElement as MonthViewElement;
calendarElement.NextButton.Click += new EventHandler(calendar_SelectionChanged);
calendarElement.PreviousButton.Click += new EventHandler(calendar_SelectionChanged);
calendarElement.FastBackwardButton.Click += new EventHandler(calendar_SelectionChanged);
calendarElement.FastForwardButton.Click += new EventHandler(calendar_SelectionChanged);
}
void calendar_SelectionChanged(object sender, EventArgs e)
{
FormatCalendar();
}
private void FormatCalendar()
{
RadDateTimePickerCalendar calendarBehavior = this.dtDOI.DateTimePickerElement.GetCurrentBehavior() as RadDateTimePickerCalendar;
RadCalendar calendar = calendarBehavior.Calendar as RadCalendar;
MonthViewElement monthView = calendarBehavior.Calendar.CalendarElement.CalendarVisualElement as MonthViewElement;
RadCalendarDay[] specialDays = calendar.SpecialDays.ToArray();
List<DateTime> dates = ExtractSpecialdates(specialDays);
foreach (CalendarCellElement cell in monthView.TableElement.Children)
{
if (dates.Contains(cell.Date))
{
cell.BackColor = Color.Green;
}
else
{
cell.BackColor = Color.White;
}
}
}
If I use calendar.ElementRender += new RenderElementEventHandler(calender_SelectionChanged); I get stuck in a perpetual loop.
Or is there a better way of doing things?