Frage

Microsofts DateTimePicker gemeinsame Steuer zeigt shortdate 's entsprechend der konfigurierten Locale-Einstellungen. Der Computer des Kunden ist mit einem 2-stelligen Jahr Short (d/M/yy) konfiguriert, so dass die Datetime zeigt 2-stellige Jahre:

Wenn der Benutzer legt Fokus im Jahr Block des Datetime-Picker, Microsoft weist darauf hin, das Thema und zeigt das volle 4-stelliges Jahr:

Aber dann der Benutzer, will 1929 als ein Jahr geben, Typen ein 2-stelliges Jahr:

Und dann, wenn sie Tab heraus, dass sie verwirrt sind, wenn Windows interpretiert ihre 2-stellige Jahre als zwischen 1930 und 2029 zu sein, und es wird angenommen, 2029 zu sein:

Der Kunde hat eine globale Unternehmenspolitik in Stelle, die besagt, dass Windows-Ländereinstellungen für 2-stellige Jahre konfiguriert werden.

Um dieses Problem zu umgehen muß ich jede DateTimePicker Kontrolle zwingen, ein benutzerdefiniertes Datumsformat zu verwenden, die handlichen DateTime_SetFormat Makro :

DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");

Dies trägt dazu bei, so dass jetzt die DateTimePicker jetzt zeigt immer ein 4-stellige Jahr:

Das Problem ist, dass der Benutzer immer noch in einem Typ kann " ungültig " 2-stellige Jahr:

Welches Windows noch intpreting, nach den Regeln, wie 2029:

Ich brauche das Datum-Zeit-Picker 2-stellige Jahre abzulehnen.

Wenn dies nicht funktioniert, dann werde ich jeden Datetimepicker mit drei Bearbeitungsfeldern zu ersetzen gezwungen werden:

22 6 29

Wo lese ich ungültige Zahlen rot färben können, und weisen darauf hin, die ungültige Dateneingabe durch den Benutzer.

Wie kann ich die Datetime verhindern y2k Fehler akzeptieren?

Keine korrekte Lösung

Andere Tipps

Wenn Sie das DTS_APPCANPARSE Fenster Stil hinzufügen, können Sie die WM_NOTIFY behandeln: Nachricht DTN_USERSTRING und analysieren Sie die Zeichenfolge selbst

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top