Le contrôle commun DateTimePicker
de Microsoft affiche ShortDate en fonction des paramètres régionaux configurés. L'ordinateur du client est configuré avec une ShortDateFormat année à 2 chiffres (d/M/yy
), de sorte que le DateTimePicker montre deux chiffres ans:Win32: Comment empêcher DateTimePicker d'accepter des années à 2 chiffres?
alt text http://i48.tinypic.com/15gxfys.jpg
Lorsque l'utilisateur met l'accent 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:
alt text http://i50.tinypic.com/2po5qc7.jpg
Mais l'utilisateur, voulant entrer 1929
comme une année, types une année à 2 chiffres:
alt text http://i46.tinypic.com/2hrltlh.jpg
Et puis quand ils onglet sur ils sont confus lorsque Windows interprète leurs années à 2 chiffres comme entre 1930
et 2029
, et il est supposé être 2029:
alt text http://i48.tinypic.com/j139qb.jpg
Le Le client a mis en place une stratégie d'entreprise globale qui impose la configuration des paramètres régionaux Windows pour les années à deux chiffres.
donc comme solution de contournement j'ai besoin de forcer chaque contrôle DateTimePicker
à utiliser une date-format personnalisé, en utilisant la pratique DateTime_SetFormat
macro:
DateTime_SetFormat(hwnd_DateOfEventPicker, "d/M/yyyy");
Cela aide, de sorte que maintenant l'DateTimePicker
maintenant montre toujours 4 chiffres année:
alt text http://i46.tinypic.com/2rcpt2q.jpg
le problème est que l'utilisateur peut toujours taper un « invalide » 2 chiffres année:
alt text http://i46.tinypic.com/2hrltlh.jpg
lequel Windows est intpreting encore, selon les règles, comme 2029:
alt text http://i46.tinypic.com/2rcpt2q.jpg
i besoin le sélecteur de date-heure de rejeter années à 2 chiffres.
Si cela ne peut pas travailler, alors je vais être obligé de remplacer tous les DateTimePicker avec 3 boîtes d'édition:
Où je peux couleur invalide numéros rouges, et signaler l'entrée de données invalide par l'utilisateur.
Comment puis-je empêcher DateTimePicker d'accepter les bogues y2k?
Je souhaite à toutes les questions ici ont été aussi bien pensé et organisé comme celui-ci. – Ben313
@ Ben313 L'inconvénient d'une question approfondie est que personne ne peut y répondre. Avec tous les "outs", ou triches, coupés, cela laisse seulement les gens informés sur un domaine de problème assez spécifique. En outre, vous devriez voir l'édition originale - où je dois avoir une diatribe libre; sachant très bien que je les éditerais une minute plus tard. –