2014-06-08 2 views
1

Dans Winforms C#, j'ai une zone de texte qui est databound à une colonne DateTime dans ma base de données. Quand je tape quelque chose comme ce qui suit dans la zone de texteC# La zone de texte liée par date limite supprime les 0 de départ

05/12/1977

Une fois que la zone de texte perd le focus, le premier 0 est retiré afin qu'il dit

5/12/1977.

La raison pour laquelle ceci est un problème est parce que je veux réellement utiliser la zone de texte masquée ainsi les/sont déjà dans la zone de texte pour l'utilisateur. Mais une fois que le 0 est enlevé, la date se foiré comme si

51/21/977_

La date sauve encore correctement mais cela provoque une partie de ma validation de formulaire réagit pas correctement car il considère la zone de texte masqué comme n'étant pas terminé. Quelqu'un sait-il un moyen d'empêcher ce premier 0 d'être supprimé?

Merci!

+0

Pourquoi utiliser DatePicker? –

+0

@ClickRick: Je ne suis pas sûr de ce que vous voulez dire? Pour la zone de texte masquée, le format est 00/00/0000, dans la section de liaison de données, je l'ai simplement défini sur ma variable DateTime. Im utilisant cadre d'entité ainsi j'ai une classe d'entité –

+0

@SyedFarjadZiaZaidi: Le contrôle DatePicker est un peu maladroit, vous ne pouvez pas taper une date sans revenir en arrière et quatrième entre les touches fléchées, j'ai donc choisi d'utiliser textbox masqué à la place. –

Répondre

1

Ceci est juste un problème avec l'information culturelle. Comme ma zone de texte était databinded à une variable DateTime, tout ce que je devais faire était de changer la méthode dans laquelle DateTime sont affichés en tant que chaînes. Le code suivant dans mon constructeur de ma forme GUI a corrigé le problème

var culture = CultureInfo.CurrentCulture.Clone() as CultureInfo; 
culture.DateTimeFormat.ShortDatePattern = "MM/dd/yyyy"; 
System.Threading.Thread.CurrentThread.CurrentCulture = culture; 
Questions connexes