Winforms MonthCalendar DateSelected 事件不会在第一次单击 MaxDate 时触发

Posted

技术标签:

【中文标题】Winforms MonthCalendar DateSelected 事件不会在第一次单击 MaxDate 时触发【英文标题】:Winforms MonthCalendar DateSelected event doesn't fire on first click of MaxDate 【发布时间】:2015-01-15 00:47:58 【问题描述】:

正如标题所说,如果我将 MonthCalendar 放在表单上并设置其 MaxDate,那么第一次单击最大日期不会触发 DateSelected 事件(尽管 DateChanged 会触发两次)。它会在第一次点击任何其他日期时触发,或者在第二次点击最大日期时触发。

这是一个已知的错误吗?如果是这样,有解决办法吗?否则,对合理的解决方法有什么建议吗?谢谢。

【问题讨论】:

【参考方案1】:

我也遇到了问题,我发现,如果单击最大日期,DateChanged 会触发两次。

如果将控件的 MaxDate 属性设置为日期并且时间戳为 23:59:59,则可以更正该错误。

这对我有用,现在它触发 1 次 DateChanged,然后触发 1 次 DateSelected。

没有时间戳的示例,其中 16.06.2015 是我的 MaxDate:

DateChanged Start: 04.06.2015 End: 04.06.2015 23:59:59
DateSelected Start: 04.06.2015 End: 04.06.2015 23:59:59

DateChanged Start: 09.06.2015 End: 09.06.2015 23:59:59
DateSelected Start: 09.06.2015 End: 09.06.2015 23:59:59

DateChanged Start: 16.06.2015 End: 16.06.2015
DateChanged Start: 16.06.2015 End: 16.06.2015

时间戳示例,其中 16.06.2015 23:59:59 是我的 MaxDate:

DateChanged Start: 10.06.2015 End: 10.06.2015 23:59:59
DateSelected Start: 10.06.2015 End: 10.06.2015 23:59:59

DateChanged Start: 15.06.2015 End: 15.06.2015 23:59:59
DateSelected Start: 15.06.2015 End: 15.06.2015 23:59:59

DateChanged Start: 16.06.2015 End: 16.06.2015 23:59:59
DateSelected Start: 16.06.2015 End: 16.06.2015 23:59:59

【讨论】:

以上是关于Winforms MonthCalendar DateSelected 事件不会在第一次单击 MaxDate 时触发的主要内容,如果未能解决你的问题,请参考以下文章

Winforms MonthCalendar DateSelected 事件不会在第一次单击 MaxDate 时触发

如何使用 MonthCalendar 获取“星期几”?

带有嵌入式 MonthCalendar 问题的 UserControl

从 Winforms 月历中获取选定的月份?

MonthCalendar.SelectionRange 数据绑定示例

MonthCalendar 颜色不变