Comment définir gagner des formes datetime picker ne pas avoir de valeur par défaut?
Je suis la mise en œuvre de la fonctionnalité de recherche dans les WinForms et je recherche par plage de date. Ainsi, il y a dateForm et dateTo sélecteurs de date sur le formulaire. Par défaut, leurs valeurs sont date time now (), et si l'utilisateur ne touchez pas la date l'heure les cueilleurs à tous les il ne sera pas obtenir tous les résultats. Parce que la recherche sera effectuée entre maintenant() et maintenant(), même si j'ai mis des valeurs min et max en tant que par défaut il permettrait de résoudre le premier problème, mais il y aurait un autre problème, si l'utilisateur souhaite effectuer une recherche par plage de dates, il faut cliquer plusieurs fois pour en venir à partir de défaut de 1700 (quelque chose) maintenant()
Des suggestions pour résoudre ce problème?
Merci beaucoup.
OriginalL'auteur eomeroff | 2010-01-28
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas avoir une valeur datepicker avec le dehors-de-le-boîte de contrôle. Pourquoi? Il est soutenu par DateTime, qui est non nullable.
Vous pouvez le désactiver avec un autre contrôle, ou de le laisser désactivé jusqu'à ce que l'utilisateur clique sur la (mauvaise UX pour clavier amateurs, comme moi), ou de trouver ou de créer (!) celui qui utilise
Nullable<DateTime>
.Edit:
En réponse à ton commentaire, oui, vous pouvez le faire; en fait, je l'ai fait.
ValueChanged
événement, mis le drapeau de la valeur à falseValueChanged
événement, définir lafrom
etto
champs pour les valeurs de la dtps (vous devez définir les deux lorsque en pao changements, parce que l'utilisateur va voir l'autre comme indiqué à aujourd'hui, mais la valeur de recherche sera toujours min ou max).Le problèmes c'est que une fois que l'utilisateur a changé la date de sélection, elle ne peut pas facilement revenir en arrière "toutes les dates." En outre, l'utilisateur ne peut pas sélectionner "aujourd'hui seulement" sans d'abord de changer une de ces dates, puis de le changer en arrière.
Je pense que la meilleure solution pour vous est d'avoir une case à cocher "recherche par plage de dates," qui permet aux deux dtps qui sont désactivé, ou affiche le dtps qui sont cachées. Ensuite, vous recherchez du min au max, sauf si la case est cochée, et lorsque la case à cocher est cochée, vous utilisez les deux pao dates peu importe ce qu'ils sont. N'oubliez pas de traiter avec
to
etfrom
être hors d'ordre, qui peut être fait de plusieurs façons.OriginalL'auteur Jay
Ont un look ici pour nullable datetimepicker sur CodeProject, en fait il y a quelques ici.
OriginalL'auteur t0mm13b
Mettre une case à cocher à côté de chaque datetime picker, et utilisez la case à cocher pour activer/désactiver le datetime picker.
Donc, si le datetimepicker est désactivé, vous savez que l'utilisateur ne voulez pas spécifier le type datetime.
OriginalL'auteur Weiming
Le DateTimePicker a un ShowCheckBox propriété qui "Détermine si une case à cocher est affichée dans le contrôle. Lorsque la case n'est pas cochée, aucune valeur n'est sélectionnée."
J'ai utilisé quelque chose comme ce qui suit pour la date de sélecteurs de plage qui peut être vide. Un utilisateur m'a dit qu'au début, elle ne savait pas ce que la case à cocher était pour elle, mais elle a compris sur son propre après l'utilisation d'un couple de fois.
OriginalL'auteur rockariotphobia
Vous pouvez définir DateDateTimePicker.propriété de format personnalisé. Alors, en vertu de DateDateTimePicker.customformat propriété, vous pouvez définir le texte par défaut de l'e.g "N/a" ou Un space " ".
Après que l'utilisateur a sélectionné une certaine valeur à la date d', vous devez définir l'arrière de la propriété format court etc.
http://i.stack.imgur.com/Z1QB5.png
Espérons que cette aide!
OriginalL'auteur user3348987