Quelle est la manière la plus simple et la plus robuste de modifier le contrôle .NET DateTimePicker, pour permettre aux utilisateurs d'entrer des valeurs null
?Comment modifier un contrôle .NET DateTimePicker pour permettre d'entrer des valeurs nulles?
Répondre
Voici un intéressant article on CodeProject. L'auteur a écrasé la propriété Value pour accepter la valeur Null en tant que DateTime.MinValue, tout en maintenant la validation de MinValue et MaxValue du contrôle standard. C'est tout ce qu'il y a à faire.
Cochez une case supplémentaire intitulée quelque chose comme "activer la notification" qui active/désactive le DateTimePicker.
solution de tri n'a pas coupé tout à fait pour moi et ainsi croyais que M. Grazioli et il a fait quelque chose: http://www.codeguru.com/csharp/csharp/cs_controls/custom/article.php/c9645
Vous n'avez pas besoin de le modifier pour le faire.
Le DateTimePicker
dans .net a en fait une case à cocher intégrée.
Définissez la propriété ShowCheckBox
sur true
.
Ensuite, vous pouvez utiliser la propriété Checked
pour voir si l'utilisateur a entré une valeur.
http://msdn.microsoft.com/en-us/library/system.windows.forms.datetimepicker.showcheckbox(VS.80).aspx
L'implémentation de case à cocher est cependant de toutes sortes d'échecs. Ne déclenche pas les événements correctement. –
J'ai posté mon long chemin autour de la solution, ce qui a des résultats dans les commentaires de code sur les questions particulières avec ce contrôle:
Définissez la propriété ShowCheckBox true. Ensuite, vous pouvez utiliser la propriété Vérifié comme suit:
private void dateTimePicker1_ValueChanged(object sender, EventArgs e)
{
DateTimePicker thisDateTimePicker = (DateTimePicker)sender;
if (thisDateTimePicker.Checked == false)
{
thisDateTimePicker.CustomFormat = @" "; //space
thisDateTimePicker.Format = DateTimePickerFormat.Custom;
}
else
{
thisDateTimePicker.Format = DateTimePickerFormat.Short;
}
}
Oui NullableDateTimePicker de M. Grazoli fait le travail même si je pense que quelqu'un doit l'examiner et essayer de se débarrasser de ces WndProc laid appelle – Calanus
L'autre chose sur le code c'est qu'il ne semblait pas faire ce qu'il était censé faire. Je ne sais pas, peut-être que je faisais quelque chose de mal. Ne pas avoir beaucoup de temps à dépenser avec ça. L'utilisation de l'idée DTP ShowCheckBox semble vraiment plus prometteuse. – IAbstract
Alors que la solution permet à l'utilisateur d'effacer une date, vous ne pouvez plus mettre le focus sur le contrôle ou utiliser le clavier pour entrer à nouveau une date non nulle. Un pas FWD, deux retour. – ChadD