0

我有这个示例表格,它设置和比较两个时间表。

在此处输入图像描述

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

例如: 第一个时间表:上午 8:00:00 到上午 10:00:00 我想捕获第二个时间表,以便它不能设置在第一个时间表之间,例如上午 8:30:00、9:00: 00 AM、9:30:00 等。.它将设置为上午 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
4

1 回答 1

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       <----->  <----->        <----->   <--------->
  • 第一个比较对测试的第二个范围的开始位于最合适的中间。
  • 第二个比较对测试第二个范围的末端位于第一个范围的中间。
  • 唯一剩下的情况是当整个第一个范围在第二个范围之间时。第三个比较对检查第一个范围的开始在第二个范围之间。

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

于 2013-02-12T09:55:35.770 回答