Те же результаты ...
я есть немногоDateTimePicker
в форме, которая никогда не обновляется.
я пробовалValue
а такжеText
, Invalidate()
а потомUpdate()
а такжеRefresh()
...
Кажется, ничто не меняет их значения с текущей даты!
Независимо от того, что я установил, текущие даты (относительно) сегодняшние!
Это ошибка .NET 3.5 или как?
(Нет, я не могу использовать .NET 4 в этом проекте.)
Если вы действительно хотите некоторый код, то вот он:dateTimePicker1.Value = user.BirthDay;
, Кроме того, если я напишуMessageBox.Show(user.BirthDay.ToString());
Я получаю симпатичную коробку с сообщением о дне рождения пользователя (мой день рождения на моей машине). (Значит, в переменной есть значение ...)
Должен ли я также упомянуть, что они только для дат, а не для времени?
Хорошо, я вижу, что мне нужно написать больше:
Прежде всего, метод, в котором обновляется элемент управления, подписывается наForm.Load
событие. Следовательно, он вызывается / запускается / вызывается, когда форма и элементы управления видны и «работают».
Во-вторых, посмотрите на эти фрагменты кода и их результат:
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 ...
Плохой контроль! 1900 не равно 1753!
dateTimePicker1.MaxDate = DateTime.Today;
// In reality, I need it to today's date
MessageBox.Show(dateTimePicker1.MinDate.ToString()); // December 31st, 9998
Time Warp? О_О
Во всяком случае, весь код выглядит так:
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
}
Итак, какое-нибудь решение? хс