C# DateTimePicker Out Of Range Exception

roker002

Commander
Registriert
Dez. 2007
Beiträge
2.075
Ich habe das Problem, dass mein Datetimepicker einfach mal ArgumentOutOfRangeException wirft obwohl die angaben gültig sind.

Also, das erste Bild Zeit die Exception selbst... Offenbar tritt es bei DateToTicks auf... was bei mir niemals aufgerufen wird.

Das zweite Bild Zeit einen Ausschnitt aus den WinForm... ich klicke auf den Monat (August z.B.) und gehe mit der Pfeiltaste nach oben oder nach unten... und schon ist die Exception da. Wenn ich über den Kalender selbst auswähle, habe ich gar kein Problem.

Die eigenschaften des Pickers sind auf Standard aus... CustomFormat steht auf "MMMM.yyyy"...

Ist das ein Bug?
 

Anhänge

  • Unbenannt.png
    Unbenannt.png
    59,3 KB · Aufrufe: 252
  • Unbenannt2.png
    Unbenannt2.png
    1,8 KB · Aufrufe: 241
Naja vllt ist die Formatierung falsch, wenn es ausserhalb des Bereichs liegt.

hast du mal probehalber nen anderen datepicker probiert?
 
Kannst du mal den StackTrace vollständig posten?
Quellcode wäre auch nützlich.
Welcher Monat ist ausgewählt wenn du nach oben gehst und die Exception kommt? Ist das schon bei Juli oder erst bei Juni?
Ergänzung ()

Eine wilde Vermutung wäre du startest beim heutigen Datum, änderst nur den Monat, und bei Monaten mit weniger als 31 Tagen kommt die Exception.
 
Wenns der standart picker von VS is, dann kann das eigentlich nicht passieren. erst wenn man dran rumbastelt ;)

ich hab bei ner anwendung alle daten die VOR dem aktuellen Datum liegen deaktiviert, eventuell greifst du auf eine ähnliche funktion zu und dies erzeigt den fehler.
 
Initialisieren mit Me.DateTimePicker1.Value = New Date(Date.Now.Year, Date.Now.Month, 1) dann klappts. Wobei es bei mir nicht knallt, gibt einfach kein ValueChanged.
 
Zuletzt bearbeitet:
Quellcode ist:

Code:
            this.AbrMonat.CustomFormat = "MMMM.yyyy";
            this.AbrMonat.Format = System.Windows.Forms.DateTimePickerFormat.Custom;
            this.AbrMonat.Location = new System.Drawing.Point(167, 8);
            this.AbrMonat.Name = "AbrMonat";
            this.AbrMonat.Size = new System.Drawing.Size(124, 20);
            this.AbrMonat.TabIndex = 4;

Mehr Quellcode gibt es einfach nicht! Wie gesagt... ich bin deswegen auch überrascht.


StackTrace ist

Die Parameter "Year", "Month", und "Day" beschreiben eine nicht darstellbare DateTime.
bei System.DateTime.DateToTicks(Int32 year, Int32 month, Int32 day)
bei System.DateTime..ctor(Int32 year, Int32 month, Int32 day, Int32 hour, Int32 minute, Int32 second)
bei System.Windows.Forms.DateTimePicker.SysTimeToDateTime(SYSTEMTIME s)
bei System.Windows.Forms.DateTimePicker.WmDateTimeChange(Message& m)
bei System.Windows.Forms.DateTimePicker.WmReflectCommand(Message& m)
bei System.Windows.Forms.DateTimePicker.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.SendMessage(HandleRef hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
bei System.Windows.Forms.Control.SendMessage(Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.Control.WmNotify(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.CallWindowProc(IntPtr wndProc, IntPtr hWnd, Int32 msg, IntPtr wParam, IntPtr lParam)
bei System.Windows.Forms.NativeWindow.DefWndProc(Message& m)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
bei System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)
bei System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(IntPtr dwComponentID, Int32 reason, Int32 pvLoopData)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)
bei System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

Kann es sein, dass es was mit CulturInfo was zutun hat. Also Monat wurde nicht richtig übersetzt und können deswegen nicht mit einem ENUM oder was auch immer weitergegeben werden
 
Zuletzt bearbeitet:
ich habe die Komponente mit dem Config Interface verbunden, was das zuletzt genutzte Datum wiederherstellt.
Ja nach dem man neues Datum drauf hat, gibt es kein Problem. Es ist aber dennoch merkwürdig.
 
Zurück
Oben