DateTimePicker ValueChanged事件在没有更改时第一次触发

joe*_*not 3 calendar datetimepicker winforms

Winforms 2.0.在表单上粘贴DateTimePicker.它默认为今天.单击下拉箭头以显示日历,然后单击"今天".ValueChanged事件已发生火灾,即使它已设置为今天.

我想要做的是复制相同的功能 - 我想将它(在代码中)重置为今天,下次我通过日历点击今天我想要触发ValueChanged事件(就像它第一次做的那样) ).

如果以上是不可能的,我想要一些事件总是在我在日历上选择日期时触发(无论是否有变化或没有变化).

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

Mat*_*ton 6

您所看到的是DateTimePicker存储其值的时间组件以及日期这一事实的副作用.

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

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