8
votes

DateTimePicker affiche la date d'aujourd'hui au lieu d'afficher sa valeur réelle

Nous avons quelques DoneTimePickers sur un utilisateur personnalisé sur un formulaire. Ils sont visibles, mais non activés (à des fins d'affichage uniquement). Lorsque l'UserControl est en cours de chargement, les DateTimePickers sont attribués des valeurs à partir d'un datarow provenant d'un jeu de données qui stocke une seule enregistrement renvoyé à partir d'une procédure stockée SQL Server.

Il existe un comportement incohérent dans lequel les utilisateurs voient parfois la date d'aujourd'hui au lieu de la date qui a été assignée au DateTimePicker. Il ne semble pas compter si j'ignent la date à laquelle je veux la propriété .Value ou la propriété .Text: xxx

Je m'attends à ce que les deux déclarations ci-dessus, L'un utilisant la propriété de valeur est plus approprié. Mais dans les deux cas, la date d'aujourd'hui est affichée à l'utilisateur, quelles que soient les valeurs figurant dans la base de données. Dans le cas de TxtSTART.Value, Visual Studio me montre que la valeur a été attribuée comme prévu. Alors, pourquoi ne pas afficher cette date à l'utilisateur au lieu de la date d'aujourd'hui?


3 commentaires

Si le DateTimePicker Ecnounter une valeur vide ou nulle, il affichera la date d'aujourd'hui.


Eh bien, si le DateTimePicker est toujours désactivé pourquoi ne pas utiliser une zone de texte à la place?


En fait, je les ai modifiés vers des boîtes de texte car je ne pouvais pas déterminer pourquoi un contrôle handicapé était là en premier lieu. Mais le point reste. Si j'ignore une valeur à un DateTimePicker en code, c'est la valeur que je m'attends à voir au moment de l'exécution.


4 Réponses :


0
votes

Cela semble être un problème avec plusieurs DateTimePickers. J'ai pu contourner la question (bug?) En créant de manière programmable les DateTimePickers avec les valeurs que je voulais et les ajouter au formulaire.


0 commentaires

17
votes

J'ai trouvé la réponse. Vous devez définir la valeur de la case à cocher pour être vérifiée pour indiquer une valeur non nulle.

this.datesold.Checked = true; // défini sur true ou false, comme vous le souhaitez this.datesold.showcheckbox = false;


3 commentaires

En tant qu'amificateur de la question, je ne peux pas vraiment confirmer si cela est vrai car j'ai fini par suivre la suggestion d'AB Kolan et simplement à l'aide de la zone de texte. Mais si cela a travaillé pour quelqu'un d'autre, alors super.


Je confirme que la propriété cochée semble être le problème. Il peut contenir une valeur de false même s'il a été défini sur true dans le concepteur.


Il semble y avoir beaucoup de problèmes avec ce contrôle. Aller par réponses "Vérifié = False" semble être le plus courant. Pour moi, il avait le contrôle à l'intérieur d'un contrôle personnalisé. Début du contrôle personnalisé fixe le problème.



0
votes

J'ai fini par aller avec la suggestion d'AB Nolan. Le raisonnement derrière un DateTimePicker handicapé n'a jamais été clair pour moi, alors de retour le 10/23/2009, plutôt que de continuer à préserver avec le contrôle, je viens d'afficher les dates que je voulais dans des zones de texte à la place.


0 commentaires

1
votes

J'avais des difficultés avec cela aussi et j'ai constaté que vous avez en effet besoin de définir le .CHECKED à true .

i Définir la propriété cochée dans la fenêtre Propriétés et il n'a toujours pas fonctionné, je ne l'ai toujours pas défini dans le code avant d'attribuer la valeur et qui corrige le problème.


0 commentaires