2009-10-12 316 views
3

Winforms 2.0。在窗体上粘贴DateTimePicker。它默认为TODAY。点击下拉箭头显示日历,然后点击TODAY。即使它已经设置为今天,ValueChanged事件也会发生火灾。DateTimePicker ValueChanged事件在没有变化时第一次触发

我想要做的是复制这个相同的功能 - 我想重置它(在代码中)到今天,并且下次我通过日历点击今天我想让ValueChanged事件触发(就像它做了第一次)。

如果上述不可行,我想要一些事件,只要我在日历上选择一个日期(无论是否有更改或无变化),总是会触发事件。

听起来很简单,肯定有人有答案?

回答

6

你看到的是DateTimePicker存储时间组件的值以及日期这一事实的副作用。

因此,当您的窗体首次初始化时,DateTimePicker正在使用DateTime.Now进行初始化。然后,当您从其下拉日历中选择“今日”时,您将的值更改为DateTime.Today。

如果您不关心时间组件和/或您始终以dateTimePicker1.Value.Date读取值,那么您可以使用DateTime.Now初始化代码中的控件,并且ValueChanged事件将在用户从日历中选择“今天”。否则,您可能会考虑捕获CloseUp事件,该事件在日历控件关闭时触发(无论值是否更改)。

+0

谢谢。你的解释是有道理的,我在实验过程中将它重新设置为DateTime.Today,正如你指出的那样,它应该是DateTime.Now。很高兴知道CloseUp事件,但我没有在我的案例中使用它,因为我想专门针对单击日历日期而不是单击表单上的任何位置。 – joedotnot 2009-10-12 03:59:05

0

我不是一个赢的窗体程序员,但看看是否有Day_Render事件。 每天都应该开火...至少有一个基于网络的开发,但我会认为它是一样的。所以寻找Render()事件。

相关问题