【发布时间】:2012-05-05 13:05:17
【问题描述】:
我正在寻找一种方法来使用两个 DateTimePicker 控件来选择一天内的小时和分钟范围。也就是基本上选择一个“开始时间”和“结束时间”。
我从两个自定义格式为 h:mm tt 的 DateTimePicker 控件开始。我尝试添加(在 ValueChanged 上),使选定的“开始时间”变为“结束时间”最小值的检查,反之亦然,“结束时间”变为“开始时间”最大值(抱歉很难解释,但是感谢您的耐心等待!)
但是,这种方法似乎不起作用 - 我仍然能够在“结束时间”选择上午 11 点,在“开始时间”选择下午 1 点。我感觉时间戳的当前日期与它有关(例如开始时间是前一天的,因此更少)。
我想改成全天预设半小时间隔的组合框;但是会议记录需要比这更灵活...
有什么想法吗?
更新:
下面丹的评论回答了这个问题......这是我最终参考的代码;
Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged
DateTimePicker2.MinDate = Date.Today + DateTimePicker1.Value.TimeOfDay
End Sub
Private Sub DateTimePicker2_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker2.ValueChanged
DateTimePicker1.MaxDate = Date.Today + DateTimePicker2.Value.TimeOfDay
End Sub
DateTimePIcker1 为下限,DateTImePIcker2 为上限,两者都使用“h:mm tt”作为自定义日期时间格式。
现在存储这些首选项将只使用 Value.TimeOfDay(并存储为时间跨度),然后在检索时发生以下加载过程;
DateTimePicker1.Value = Date.Today + StoredTimeLowerBound
DateTimePicker2.Value = Date.Today + StoredTimeUpperBound
这将自动调用上面处理的 ValueChanged 事件并恢复选定的值。
丹,谢谢你的帮助:)
【问题讨论】:
-
发布您正在使用的 ValueChanged 逻辑可能会有所帮助。
-
当然,当我有机会回到我的代码时会这样做:)
标签: vb.net datetime datetimepicker