He encontrado un error muy específico con el control DateTimePicker en Windows Forms. El control tiene un formato personalizado (MM-YYYY -> 01/2010) - el mes/año de una tarjeta de crédito. Hoy es el 29 de septiembre. Si un usuario selecciona el control y usa el teclado para configurar el mes en febrero, el control lanzará una ArgumentOutOfRangeException. No hay una fecha tal como el 29 de febrero de 2009. Esto también ocurrirá en días como el día 31, moviéndose a un mes con solo 30 días.¿Cómo puedo manejar un formulario de Windows datetimepicker ArgumentOutOfRangeException?
Sería fácil manejar esto estableciendo el día en '01', sin embargo, un usuario puede hacer clic en el calendario para seleccionar manualmente el 30 y luego usar el teclado para seleccionar febrero.
¿Cómo se puede capturar esta excepción cuando la entrada está ocurriendo en la GUI y no realmente en el código? Hemos tratado de atraparlo en el evento TextChanged, pero eso ya es demasiado tarde. La excepción ya está lanzada.
¿Hay alguna manera de manejar este caso? Sería bueno si el control cambiara automáticamente el día al valor más alto para ese mes. O al menos si pasó la excepción a través de un evento.
(Soy consciente de que podríamos atrapar el evento KeyPressed y establecer el día en 01 cada vez, pero esto se siente 'hacky').
Acabo de probar si ocurre cuando el día se muestra al usuario, y no es así. Así que tienes razón, el control equivocado ES en uso. Pero el propósito de hacer la pregunta era averiguar si era posible manejar excepciones que ocurrieron de manera similar. Si se genera una excepción de la interacción UI de un control. –