You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MonthCalendar表单控件选中最大日期时的异常问题

问题原因及解决方法

原因

这是System.Windows.Forms.MonthCalendar控件的一个小问题:当设置的MaxDate恰好是当月最后一天时,第一次点击该日期,控件内部的SelectionRange对象未能及时同步更新选中的日期,导致DateSelected事件触发时,读取SelectionRange.Start得到的还是之前的日期,第二次点击才会完成正确同步。

简单解决方法

无需修改控件属性配置,只需在DateSelected事件处理逻辑中,直接使用事件参数里的Start属性获取选中日期——事件参数的信息是实时触发的,不受控件内部同步延迟影响。

修改后的关键代码如下:

$fromCAL.Add_DateSelected({
    # 改用事件参数的Start属性获取选中日期
    $fromBOX.Text = Get-Date $_.Start -f "dd/MM/yyyy"
})

替换原代码中对应的事件处理块后,点击4月30日就能一次显示到文本框中。

另外,也可以直接使用控件的SelectionStart属性(当MaxSelectionCount=1时,SelectionStart就是当前选中的单个日期),效果一致:

$fromCAL.Add_DateSelected({
    $fromBOX.Text = Get-Date $fromCAL.SelectionStart -f "dd/MM/yyyy"
})

内容的提问来源于stack exchange,提问作者Doofus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 08:27:09