Win32: ¿Cómo prevenir DateTimePicker de aceptar años de 2 dígitos?
-
29-09-2019 - |
Pregunta
programas de control DateTimePicker
común de Microsoft shortdate 's de acuerdo con la configuración regional configurados. el ordenador del cliente está configurado con una ShortDateFormat año de 2 dígitos (d/M/yy
), por lo que los programas de DateTimePicker año de 2 dígitos:
Cuando los usuarios se centran pone en el bloque años del selector de fecha y hora, los puntos de Microsoft fuera el tema, y ??espectáculos de todo el año de 4 dígitos:
Pero entonces el usuario, con ganas de entrar en 1929
como un año, los tipos de un año de 2 dígitos:
Y luego, cuando se salta fuera que están confundidos cuando Windows interpreta sus años de 2 dígitos como entre 1930
y 2029
, y se supone que ser 2029:
El cliente tiene una política corporativa global en el lugar que dicta que la configuración regional de Windows pueden configurar por años de 2 dígitos.
Así como una solución que necesito para obligar a todos los controles DateTimePicker
utilizar un formato de fecha personalizada, utilizando la mano DateTime_SetFormat
macro :
DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");
Esto ayuda, por lo que ahora el DateTimePicker
ahora siempre muestra un año de 4 dígitos:
El problema es que el usuario puede escribir en un " no válido " El año de 2 dígitos:
¿Qué Windows sigue siendo intpreting, de acuerdo con las reglas, como 2029:
necesito el selector de fecha y hora de rechazar año de 2 dígitos.
Si esto no puede trabajar, entonces voy a ser obligado a reemplazar cada DateTimePicker con 3 cuadros de edición:
22 6 29
¿Dónde puedo colorear números no válidos rojo, y el punto de la entrada de datos no válido por el usuario.
¿Cómo puedo evitar que el DateTimePicker de aceptar errores Y2K?
No hay solución correcta
Otros consejos
Si se agrega el estilo de ventana DTS_APPCANPARSE, puede manejar el WM_NOTIFY: Mensaje de DTN_USERSTRING y analizar la cadena de sí mismo