Mam kilka DateTimePicker
s w formie, która nigdy się nie aktualizuje.
Próbowałem Value
i Text
, Invalidate()
a następnie Update()
a także Refresh()
...DateTimePicker nigdy nie aktualizuje!
Nic nie wydaje się, aby zmienić swoje wartości od bieżącej daty!
Bez względu na to, co ustawiłem, obecne daty są (względnie) aktualne!
Czy jest to błąd .NET 3.5, czy co?
(. Nie, nie mogę używać .NET 4 nad tym projektem)
Jeśli naprawdę chcesz jakiś kod, to tutaj jest: dateTimePicker1.Value = user.BirthDay;
. Ponadto, jeśli napiszę MessageBox.Show(user.BirthDay.ToString());
, otrzymam ładne pudełko z informacją o urodzinach użytkownika (moje urodziny, na moim komputerze). (Tak więc wartość w zmiennej ...)
Czy powinienem również wspomnieć, że są one tylko dla dat, a nie razy?
Ok, widzę, że trzeba pisać więcej:
Przede wszystkim, sposób, w którym kontrola jest aktualizowana subskrybuje zdarzenia Form.Load
. W związku z tym jest wywoływana/uruchamiana/wywoływana, gdy formularz i elementy sterujące są widoczne i "działają".
Po drugie, spójrz na to kawałki kodu i ich wyniki:
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!
To nie jest miłe ... Wyjście jest dzisiejsza data. (Do dziś mam na myśli dzień, w którym kod został uruchomiony.)
dateTimePicker1.MinDate = new DateTime(1900,1,1); // January 1st, 1900
MessageBox.Show(dateTimePicker1.MinDate.ToString()); // January 1st, 1753 ...
Zła kontrola! 1900 nie równa się 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
Zresztą, cały kod wygląda następująco:
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
}
tak, to jakieś rozwiązanie? xC
jesteś pierwszą osobą zgłaszającą ten błąd –
Czy ustawiłeś 'MinDate' dla datetimicker? Czy jesteś pewien, że nikt inny nie nadpisuje twojej wartości?Ponieważ uważam, że jest całkiem bezpiecznie powiedzieć, że nie ma w nim błędów ;-) –
Czy próbowałeś ustawić wartość na "DateTime.Parse (user.BirthDay.ToString())"? –