捕获两个timeedit计划

时间:2013-02-12 02:02:48

标签: c# vb.net winforms visual-studio-2010 datetime

我有这个样本表格,用于设置和比较两个时间表。

enter image description here

如果在第一个时间表(时间开始和时间结束)之间,我想要捕获第二个时间表无法设置的时间。

例如: 第一个Sched: 上午8:00:00至10:00:00 我想捕获第二个时间表,以便它不能在第一个时间表之间设置,如8:30:00 AM,9:00:00 AM,9:30:00等。 .it将设置为上午10:00:00或以上。我怎么可能这样做?

我已经完成了某些代码,但想办法如何做到这一点对我来说很难。有人可以帮忙吗?

这是我的示例代码:

 Private Sub Test_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        If timeStart.EditValue > timeEnd.EditValue Then
            XtraMessageBox.Show("Time end must higher than time start", "", MessageBoxButtons.OK, MessageBoxIcon.Hand)
            Exit Sub
        ElseIf timeStart.EditValue = timeEnd.EditValue Then
            XtraMessageBox.Show("Time start must not be equal to time end", "", MessageBoxButtons.OK, MessageBoxIcon.Hand)
            Exit Sub
        ElseIf timeStart1.EditValue < timeEnd.EditValue Then
            XtraMessageBox.Show("Invalid", "", MessageBoxButtons.OK, MessageBoxIcon.Hand)
            Exit Sub
        ElseIf timeEnd1.EditValue < timeEnd.EditValue Then
            XtraMessageBox.Show("Invalid", "", MessageBoxButtons.OK, MessageBoxIcon.Hand)
            Exit Sub
        End If


    End Sub

1 个答案:

答案 0 :(得分:1)

Dim t1Start = timeStart.EditValue
Dim t1End = timeEnd.EditValue
Dim t2Start = timeStart1.EditValue
Dim t2End = timeEnd1.EditValue

If (t2Start >= t1Start And t2Start <= t1End) Or _
    (t2End >= t1Start And t2End <= t1End) Or _
    (t1Start >= t2Start And t1Start <= t2End) Then

    XtraMessageBox.Show("The times should not overlap", "", MessageBoxButtons.OK, MessageBoxIcon.Hand)

End If

有四种情况可能:

1st range   <------->      <------->   <------->   <------->
2nd range       <----->  <----->        <----->   <--------->
  • 第一个比较对测试第二个范围的开始位于最合适的范围中间。
  • 第二个比较对测试第二个范围的结尾位于第一个范围的中间。
  • 唯一剩下的情况是当第一个范围在第二个范围之间时。第三比较对检查第一范围的开始是否在第二范围之间。

这可以处理重叠范围的所有情况。