Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net DateTimePicker:仅在一天内选择一个小时范围_Vb.net_Datetime_Datetimepicker - Fatal编程技术网

Vb.net DateTimePicker:仅在一天内选择一个小时范围

Vb.net DateTimePicker:仅在一天内选择一个小时范围,vb.net,datetime,datetimepicker,Vb.net,Datetime,Datetimepicker,我正在寻找一种使用两个DateTimePicker控件在一天内选择小时和分钟范围的方法。也就是说,基本上选择“开始时间”和“结束时间” 我从两个DateTimePicker控件开始,它们的自定义格式为h:mm tt。我尝试添加ValueChanged,一个使所选“开始时间”成为“结束时间”最小值的检查,反之亦然,“结束时间”成为“开始时间”最大值的检查抱歉很难解释,但感谢您的耐心 然而,这种方法似乎不起作用——我仍然能够选择上午11点作为“结束时间”,下午1点作为“开始时间”。我有一种感觉,时间

我正在寻找一种使用两个DateTimePicker控件在一天内选择小时和分钟范围的方法。也就是说,基本上选择“开始时间”和“结束时间”

我从两个DateTimePicker控件开始,它们的自定义格式为h:mm tt。我尝试添加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事件,并恢复选定的值


丹,谢谢你的帮助:

这将确保你的两个时间从今天开始:

Dim startTime As Date = Date.Today + DateTimePicker1.Value.TimeOfDay
Dim endTime As Date = Date.Today + DateTimePicker2.Value.TimeOfDay
然后,如果endTime 最后,只需将修改后的日期值放回DateTimePicker控件:

DateTimePicker1.Value = startTime
DateTimePicker2.Value = endTime
编辑:在小时范围内,您需要一个TimeSpan对象,它是DateTime对象加减后的自动结果:


这将确保您的两个时间从今天开始:

Dim startTime As Date = Date.Today + DateTimePicker1.Value.TimeOfDay
Dim endTime As Date = Date.Today + DateTimePicker2.Value.TimeOfDay
然后,如果endTime 最后,只需将修改后的日期值放回DateTimePicker控件:

DateTimePicker1.Value = startTime
DateTimePicker2.Value = endTime
编辑:在小时范围内,您需要一个TimeSpan对象,它是DateTime对象加减后的自动结果:


发布您正在使用的ValueChanged逻辑可能会有帮助。当然,当我有机会返回到我的代码时会这样做:发布您正在使用的ValueChanged逻辑可能会有帮助。当然,当我有机会返回到我的代码时会这样做:谢谢您的回复。我并不担心这些价值观是从哪一天开始的,我只是想知道为什么我想要的东西不起作用。我想我可以改写为,我需要在带有验证逻辑的DateTimePickers中使用开始时间和结束时间作为h:MM tt来选择一个小时范围。@Shadow:请参见我的编辑。这就是你的意思吗?甚至不接近?我再次访问了我的代码,并测试了您提供的第一条语句-它们工作得非常出色!Value.TimeOfDay确实帮了大忙:。感谢您的回复。我并不担心这些价值观是从哪一天开始的,我只是想知道为什么我想要的东西不起作用。我想我可以改写为,我需要在带有验证逻辑的DateTimePickers中使用开始时间和结束时间作为h:MM tt来选择一个小时范围。@Shadow:请参见我的编辑。这就是你的意思吗?甚至不接近?我再次访问了我的代码,并测试了您提供的第一条语句-它们工作得非常出色!Value.TimeOfDay确实帮助了事情的发展:。