DateTimePicker jamais les mises à jour!
J'ai quelques DateTimePicker
s dans une forme que jamais de mise à jour.
J'ai essayé Value
et Text
, Invalidate()
et puis Update()
et aussi Refresh()
...
Rien ne semble changer leurs valeurs à partir de la date actuelle!
Peu importe ce que j'ai mis, les dates de cours sont (relativement)aujourd'hui!
Est-ce une .NET 3.5 bug ou quoi?
(Non, je ne peux pas utiliser .NET 4 sur ce projet.)
Si vous voulez vraiment un peu de code, alors le voici: c'est dateTimePicker1.Value = user.BirthDay;
. Aussi, si j'écris MessageBox.Show(user.BirthDay.ToString());
je reçois une jolie boîte en informer l'utilisateur de l'anniversaire (jour de mon anniversaire, sur ma machine). (Donc il y a une valeur dans la variable...)
Dois-je aussi mentionner qu'ils sont uniquement pour les dates et non pas les temps?
Ok, je vois, j'ai besoin d'écrire plus:
Tout d'abord, la méthode de contrôle est mis à jour est abonné à la Form.Load
événement. Par conséquent, il est appelé/déclenché/invoquée lorsque la forme et les contrôles sont visibles et "exécution".
Deuxièmement, regardez ce morceaux de code et leur résultat:
MessageBox.Show(user.BirthDay.ToString()); //Shows 12.12.1995 (in my regional format)
dateTimePicker1.Value = user.BirthDay; //assigned to 12.12.1995
MessageBox.Show(dateTimePicker1.Value.ToString()); //Shows today's date!
Ce n'est pas agréable... La sortie est la date d'aujourd'hui. (Aujourd'hui, je veux dire le jour où le code a été exécuté.)
dateTimePicker1.MinDate = new DateTime(1900,1,1); //January 1st, 1900
MessageBox.Show(dateTimePicker1.MinDate.ToString()); //January 1st, 1753 ...
Le mauvais contrôle! 1900 n'est pas égal à 1753!
dateTimePicker1.MaxDate = DateTime.Today;
//In reality, I need it to today's date
MessageBox.Show(dateTimePicker1.MinDate.ToString()); //December 31st, 9998
Time warp? O_O
De toute façon, tout le code ressemble à ceci:
public void Form_Load(object sender, EventArgs e)
{
this.user = User.Load(path);
//this.user is a field.
//path is a static field which holds the absolute path of the file in which is serialized that data of the user.
MessageBox.Show(user.BirthDay.ToString()); //Shows 12.12.1995 (in my regional format)
dateTimePicker1.Value = user.BirthDay; //assigned to 12.12.1995
MessageBox.Show(dateTimePicker1.Value.ToString()); //Shows today's date!
dateTimePicker1.MinDate = new DateTime(1900,1,1); //January 1st, 1900
MessageBox.Show(dateTimePicker1.MinDate.ToString()); //January 1st, 1753 ...
dateTimePicker1.MaxDate = DateTime.Today;
MessageBox.Show(dateTimePicker1.MinDate.ToString()); //December 31st, 9998
}
Donc, toute solution? xC
Avez-vous mis un
MinDate
pour le datetimepicker? Êtes-vous sûr que personne d'autre n'est d'écraser votre valeur? Parce que je pense qu'il est assez sûr de dire qu'il n'y a pas un bug dans le cadre 😉Avez-vous essayé le réglage de la Valeur de
DateTime.Parse(user.BirthDay.ToString())
?Voulez-vous insérer votre
BithDay
code de la propriété?Il n' pas de travail, sinon je n'aurais pas posté cette question, non?
OriginalL'auteur Vercas | 2010-11-13
Vous devez vous connecter pour publier un commentaire.
Une petite astuce avec ce problème: mon problème est que j'ai eu le DateTimePicker mis à checked=false et (par erreur) ShowCheckbox=false;
Avec cette configuration je pourrais le mettre à DTPicker quelle que soit la valeur que je voulais, mais il ne sera pas udate lui-même.
C'était le problème, il arrive parce que quand vous cliquez droit sur "Réinitialiser" le DateTimePicker valeur, les changements de "Cochées" pour de Faux !
De ce fait le travail pour moi aussi, cependant, j'ai eu deux contrôles élément tabpage avec exactement le même genre de nidification pour les contrôles contenus, etc., et pour l'un d'entre eux je n'ai jamais eu de problèmes. Sur l'autre élément tabpage, l' (DateTimePicker) contrôle jamais mis à jour sur l'INTERFACE, mais le réglage Vérifié à True pour que DateTimePicker résolu ce problème (encore une fois, sur l'autre, il a travaillé avec les deux paramètres).
Une chose que je viens de remarquer - le commentaire de la propriété Checked de la DateTimePicker dit "Quand ShowSelectBox est vrai, détermine si la case est cochée, indiquant que l'utilisateur a sélectionné une valeur.". La chose est - il n'existe pas de ShowSelectBox bien sur mon contrôle DateTimePicker. En regardant la version la plus récente sur le site web MSDN (msdn.microsoft.com/en-us/library/...), la description a été mis à jour, il pourrait avoir à mettre à jour nos fichiers d'aide.
Même problème dans un vb.net projet, j'essayais juste de corriger. Whodathunkit? Merci pour l'affichage de la correction!
OriginalL'auteur jelinek.01
La norme de diagnostic pour un formulaire de mise à jour de son aspect visuel, mais que l'on voit de la propriété mise à jour avec le débogueur juste l'amende est de l'utilisation de la mauvaise forme de l'instance. Comme ceci par exemple:
Diagnostiquer ce par la modification de votre code comme ceci:
Form.Load
événement, qui se déclenche lorsque la forme et les contrôles sont déjà visibles. Aussi le réglage de laMinDate
ouMaxDate
ne semble pas fonctionner!Le formulaire est pas encore visible lorsque la Charge événement se déclenche. S'il l'est, il y a quelque chose de vraiment mauvais. Définissez un point d'arrêt et de regarder la pile d'appel. Assurez-vous que vous ne voyez pas le constructeur.
J'ai peur qu'il soit visible!
N'utilisez pas de MessageBox de débogage. Elle pompe une boucle de message, permettant à d'autres gestionnaires d'événements est à votre formulaire pour exécuter. Utilisation De La Console.WriteLine, regardez dans la fenêtre de Sortie.
Mêmes résultats...
OriginalL'auteur Hans Passant