private void SetRange()
{
bool startChanged = false;
bool endChanged = false;
DateTime minDate = EffectiveMinDate(_minDate);
DateTime maxDate = EffectiveMaxDate(_maxDate);
if (_selectionStart < minDate)
{
_selectionStart = minDate.Date;
startChanged = true;
}
if (_selectionStart > maxDate)
{
_selectionStart = maxDate.Date;
startChanged = true;
}
if (_selectionEnd < minDate)
{
_selectionEnd = minDate.Date;
endChanged = true;
}
if (_selectionEnd > maxDate)
{
_selectionEnd = maxDate.Date;
endChanged = true;
}
PerformNeedPaint(true);
if (startChanged)
OnSelectionStartChanged(EventArgs.Empty);
if (endChanged)
OnSelectionEndChanged(EventArgs.Empty);
if (startChanged || endChanged)
OnDateChanged(new DateRangeEventArgs(_selectionStart, _selectionEnd));
SetFocusDay();
}