У меня есть 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 февраля).
Как мне этого добиться?