Win32: Comment éviter d'accepter DateTimePicker années à 2 chiffres?
-
29-09-2019 - |
Question
montre de contrôle commun de DateTimePicker
Microsoft shortdate de fonction des paramètres configurés Locale. L'ordinateur du client est configuré avec une ShortDateFormat année à 2 chiffres (d/M/yy
), de sorte que les DateTimePicker spectacles années à 2 chiffres:
Lorsque les puts utilisateur se concentrent dans le bloc de l'année du sélecteur de datetime, les points Microsoft sur la question, et montre la pleine année à 4 chiffres:
Mais l'utilisateur, voulant entrer 1929
comme une année, types une année à 2 chiffres:
Et puis quand ils onglet sur ils sont confus lorsque Windows interprète comme étant entre 1930
et 2029
, et il est supposé leurs années à 2 chiffres comme 2029:
Le client dispose d'une politique globale de l'entreprise en place qui dicte que les paramètres régionaux de Windows être configurés pour les années à 2 chiffres.
Afin de contourner ce problème que je dois forcer chaque contrôle de DateTimePicker
à utiliser une date-format personnalisé, en utilisant la pratique DateTime_SetFormat
macro :
DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");
Cette aide, de sorte que maintenant l'DateTimePicker
maintenant montre toujours une année à 4 chiffres:
Le problème est que l'utilisateur peut toujours taper dans un " invalide " 2 chiffres année:
Quel Windows est intpreting encore, selon les règles, comme 2029:
i besoin le sélecteur de date-heure de rejeter années à 2 chiffres.
Si cela ne peut pas fonctionner, alors je vais être obligé de remplacer tous les DateTimePicker avec 3 boîtes d'édition:
22 6 29
Où je peux colorer les numéros invalides rouge, et le point sur l'entrée de données non valide par l'utilisateur.
Comment puis-je empêcher le DateTimePicker d'accepter y2k des bugs?
Pas de solution correcte
Autres conseils
Si vous ajoutez le style de fenêtre DTS_APPCANPARSE, vous pouvez gérer le WM_NOTIFY: message DTN_USERSTRING et analyser la chaîne vous