Win32: Wie Datetime von der Annahme 2-stellige Jahre zu verhindern?
-
29-09-2019 - |
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