Dave81 set me on to the right track.
If you do what he says, the problem is, that when the user changes the value manually, the CloseUp event obviously isn t triggered.
The way I ve fixed this problem with the constant re-firing of the month change event, is to change my ValueChanged event to only refresh if the calendar isn t dropped down. I.e.:
private bool _calendarDroppedDown = false;
//called when calendar drops down
private void dateStartDateTimePicker_DropDown(object sender, EventArgs e)
{
_calendarDroppedDown = true;
}
//called when calendar closes
private void dateStartDateTimePicker_CloseUp(object sender, EventArgs e)
{
_calendarDroppedDown = false;
RefreshToolbox(null, null); //NOW we want to refresh display
}
//This method is called when ValueChanged is fired
public void RefreshToolbox(object sender, EventArgs e)
{
if(_calendarDroppedDown) //only refresh the display once user has chosen a date from the calendar, not while they re paging through the days.
return;
...
}