2012-04-24 118 views
0

我已经得到了开始日期来验证结束日期和显示消息后,但是当我把下面的代码.focus它似乎运行代码两次 我已经尝试了一切 句柄是假 尝试,它没有工作 我也把它变成一个新的线程,没有工作 并成一个函数,没有工作 IM在我结束智慧在这一个代码运行两次

这里是代码

Function DateCompare(ByVal Start As Date, ByVal Finish As Date, ByVal WhichDate As String) 
    If WhichDate = "DateIn" Then 
    If DateTime.Compare(Start, Finish) > 0 Then 
     MsgBox("Dates Are Invalid : Date In Cannot be after Date Out, Please Amend", vbExclamation, "Dates Are Incorrect") 
     Return False 
     Exit Function 
    Else 
     Return True 
    End If 
    Else 
    If DateTime.Compare(Finish, Start) < 0 Then 
     MsgBox("Dates Are Invalid : Date Out Cannot be before Date In, Please Amend", vbExclamation, "Dates Are Incorrect") 
     Return False 
     Exit Function 
    Else 
     Return True 
    End If 
    End If 
End Function 

Private Sub dtpDateTimeIn_leave(ByVal sender As Object, ByVal e As EventArgs) Handles dtpDateTimeIn.Leave 
    Dim result As Boolean 
    result = DateCompare(dtpDateTimeIn.Value, dtpDateTimeOut.Value, "DateIn") 
    If result = False Then 
    dtpDateTimeIn.Focus() 
    End If 
End Sub 

Private Sub dtpDateTimeOut_leave(ByVal sender As Object, ByVal e As EventArgs) Handles dtpDateTimeOut.Leave 
    Dim result As Boolean 
    result = DateCompare(dtpDateTimeIn.Value, dtpDateTimeOut.Value, "DateOut") 
    If result = False Then 
    dtpDateTimeOut.Focus() 
    End If 
End Sub 

回答

0

尝试使用代替Validating事件。他们是这样做的:

Private Sub dtpDateTimeIn_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles dtpDateTimeIn.Validating 
    e.Cancel = Not DateCompare(dtpDateTimeIn.Value, dtpDateTimeOut.Value, "DateIne") 
End Sub 

Private Sub dtpDateTimeOut_Validating(ByVal sender As Object, ByVal e As CancelEventArgs) Handles dtpDateTimeOut.Validating 
    e.Cancel = Not DateCompare(dtpDateTimeIn.Value, dtpDateTimeOut.Value, "DateOut") 
End Sub