2012-04-24 8 views
0

終了日後にメッセージが表示されるかどうかを確認する開始日がすでにありますが、次のコードを挿入すると.focusはコードを2回実行しているようです すべてを試しました ハンドルが離れる は、私もここにこの1コードが2回実行されています

に私の両端のウィットでのdidnt仕事、didntの仕事 、新しいスレッドにしても機能に イムそれを置く それがコードをされて仕事didntのことを試してみました

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 
関連する問題