Я столкнулся с очень специфической ошибкой с элементом управления DateTimePicker в Windows Forms. Элемент управления имеет собственный формат (ММ-ГГГГ -> 01/2010) - месяц/год кредитной карты. Сегодня 29 сентября. Если пользователь выбирает элемент управления и использует клавиатуру для установки месяца до февраля, элемент управления выдаст исключение ArgumentOutOfRangeException. Нет такой даты, как 29 февраля 2009 года. Это также произойдет в дни 31-го, перейдя на месяц с 30 днями.Как я могу обрабатывать формы windows datetimepicker ArgumentOutOfRangeException?
Было бы легко справиться с этим, установив день на «01», однако пользователь может щелкнуть по календарю, чтобы вручную выбрать 30-е, а затем использовать клавиатуру для выбора февраля.
Как это исключение можно поймать, когда входные данные происходят в графическом интерфейсе, а не в коде? Мы попытались поймать его в событии TextChanged, но это уже слишком поздно. Исключение уже выбрано.
Есть ли способ обработать этот случай? Было бы неплохо, если бы элемент управления автоматически изменил день на максимальное значение за этот месяц. Или, по крайней мере, если он прошел исключение через событие.
(Я знаю, что мы могли бы захватить событие KeyPressed и установить день на 01 каждый раз, но это кажется «взломанным»).
Я только что проверил, если это происходит, когда день отображается пользователю, а это не так. Таким образом, вы правы, неправильный контроль используется. Но цель, которую я задавала, заключалась в том, чтобы выяснить, можно ли обрабатывать исключения, которые произошли аналогичным образом? Если исключение генерируется из взаимодействия пользовательского интерфейса элемента управления. –