У меня есть DateTimePicker, который я установил для отображения только месяца и года следующим образом:
myDateTimePicker.Format = DateTimePickerFormat.Custom;
myDateTimePicker.CustomFormat = "MMMM yyyy";
myDateTimePicker.ShowUpDown = true;
Однако я хочу, чтобы значение даты всегда было последним днем выбранного месяца, поэтому я установил DateTime в событии ValueChanged с использованием:
DateTime selectedDate = myDateTimePicker.Value;
DateTime lastDayOfMonth = new DateTime(
selectedDate.Year,
selectedDate.Month,
DateTime.DaysInMonth(selectedDate.Year, selectedDate.Month));
myDateTimePicker.Value = lastDayOfMonth;
Проблема в том, что если у меня выбран месяц, например март, и я меняю месяц на февраль с помощью элементов управления вверх/вниз, я получаю следующую ошибку, прежде чем смогу обработать событие ValueChanged :
ArgumentOutOfRangeException was unhandled
Year, Month, and Day parameters describe an un-representable DateTime.
Это понятно, потому что дата была 31 марта, а сейчас она меняется на 31 февраля, что является неверной датой. Однако я хочу изменить его на 28 февраля (или 29 февраля).
Как мне этого добиться?