2008-11-12 7 views

Répondre

5

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.

+1

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

+0

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

+0

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

4

Cochez une case supplémentaire intitulée quelque chose comme "activer la notification" qui active/désactive le DateTimePicker.

46

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

+1

L'implémentation de case à cocher est cependant de toutes sortes d'échecs. Ne déclenche pas les événements correctement. –

0

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:

DateTime Picker null value

0

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; 
      } 
     } 
Questions connexes