我有一些在表单中的 DateTimePicker
,但它们从未更新。
我已尝试使用 Value
和 Text
,Invalidate()
然后 Update()
,还有 Refresh()
...
无论我设定什么,都不能改变它们当前日期的值!
不管我设置什么,当前的日期都是今天的日期。
这是 .NET 3.5 的一个 bug 吗?
(不,我不能在这个项目中使用 .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
时间扭曲?O_O
无论如何,整个代码看起来像这样:
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
}
所以,有任何解决方案吗?xC
MinDate
吗?你确定没有其他人覆盖了你的值吗?因为我认为可以很肯定地说,框架中没有bug;-) - Klaus Byskov PedersenDateTime.Parse(user.BirthDay.ToString())
吗? - Evan MulawskiBithDay
属性代码吗? - Saeed Amiri