Win32: Come impedire DateTimePicker dall'accettare anni a 2 cifre?
-
29-09-2019 - |
Domanda
spettacoli di controllo DateTimePicker
comune di Microsoft shortdate 's in base alle impostazioni configurate Locale. computer del cliente è configurato con un anno ShortDateFormat 2 cifre (d/M/yy
), quindi gli spettacoli DateTimePicker anni a 2 cifre:
Quando l'utente mette concentrano nel blocco anno della raccoglitrice datetime, punti Microsoft fuori la questione, e spettacoli l'intero anno a 4 cifre:
Ma poi l'utente, che vogliono entrare 1929
come un anno, i tipi di un anno a 2 cifre:
E poi quando scheda out sono confusi quando Windows interpreta i loro anni a 2 cifre come tra 1930
e 2029
, e si presume essere 2029:
Il cliente ha una politica aziendale globale nel luogo che impone che le impostazioni internazionali di Windows sono configurati per anni a 2 cifre.
Così come una soluzione ho bisogno di forzare ogni controllo DateTimePicker
ad utilizzare una data-formato personalizzato, utilizzando il pratico DateTime_SetFormat
macro :
DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");
In questo modo, in modo che ora il DateTimePicker
ora mostra sempre un anno a 4 cifre:
Il problema è che l'utente può comunque digitare un " non valida " anno a 2 cifre:
Quali Windows è ancora intpreting, secondo le regole, come 2029:
ho bisogno del selettore di data-ora di rifiutare anni a 2 cifre.
Se questo non può lavoro, poi ho intenzione di essere costretto a sostituire ogni DateTimePicker con 3 caselle di modifica:
22 6 29
Dove posso colorare numeri non validi rosso, e sottolineano l'immissione di dati non validi da parte dell'utente.
Come posso evitare che il DateTimePicker da accettare Y2K bug?
Nessuna soluzione corretta
Altri suggerimenti
Se si aggiunge lo stile della finestra DTS_APPCANPARSE, è possibile gestire il WM_NOTIFY: messaggio DTN_USERSTRING e analizzare la stringa da soli