Ich habe einen sehr spezifischen Fehler mit dem DateTimePicker-Steuerelement in Windows Forms festgestellt. Das Steuerelement hat ein benutzerdefiniertes Format (MM-JJJJ -> 01/2010) - den Monat/das Jahr einer Kreditkarte. Heute ist der 29. September. Wenn ein Benutzer das Steuerelement auswählt und mithilfe der Tastatur den Monat auf Februar festlegt, löst das Steuerelement eine ArgumentOutOfRangeException aus. Es gibt kein solches Datum wie 29-Feb-2009. Dies wird auch an Tagen wie dem 31. geschehen, die zu einem Monat mit nur 30 Tagen wechseln.Wie kann ich mit einem Windows Forms datetimepicker ArgumentOutOfRangeException umgehen?
Es wäre einfach genug, dies zu handhaben, indem Sie den Tag auf "01" stellen, aber ein Benutzer kann auf den Kalender klicken, um manuell den 30. auszuwählen, und dann die Tastatur verwenden, um Februar auszuwählen.
Wie kann diese Ausnahme abgefangen werden, wenn die Eingabe auf der GUI geschieht und nicht wirklich im Code? Wir haben versucht, es im TextChanged-Ereignis abzufangen, aber das ist bereits zu spät. Die Ausnahme wurde bereits ausgelöst.
Gibt es eine Möglichkeit, diesen Fall zu behandeln? Es wäre schön, wenn das Steuerelement den Tag automatisch auf den höchsten Wert für diesen Monat ändern würde. Oder zumindest, wenn es die Ausnahme durch ein Ereignis passiert hat.
(Ich bin mir bewusst, dass wir das KeyPressed-Ereignis abfangen und den Tag jedes Mal auf 01 setzen können, aber das fühlt sich "hacky" an).
Ich habe gerade getestet, ob es passiert, wenn der Tag dem Benutzer angezeigt wird, und es nicht tut. Du hast also Recht, die falsche Kontrolle wird benutzt. Aber der Zweck meiner Frage war, herauszufinden, ob es möglich war, Ausnahmen zu behandeln, die auf ähnliche Weise auftraten. Wenn eine Ausnahme von der Benutzeroberflächeninteraktion eines Steuerelements generiert wird. –