验证文本框中的日期



我试图在一个文本框中有效的用户输入,该文本框只接受日期或空值(因此文本框vs日期时间选择器)。以下是条件:

  • 只有日期值("dd-mm-yyyy"或"dd-mm-yy")
  • 必须只包含斜杠或数字
  • 日期必须在输入
  • 的当天

这是我目前为止写的:

Private Sub tbApp1_TextChanged(sender As System.Object, e As System.EventArgs) Handles tbApp1.TextChanged
        If Not Me.tbApp1.Text = String.Empty Then
            If Not DateTime.TryParseExact(tbApp1.Text.Trim, formats, New Globalization.CultureInfo("en-US"), Globalization.DateTimeStyles.None, dtTemp) Then
                If Not tbApp1.Text.Trim = DateTime.Today.Date Then
                    ErrorProvider1.SetError(tbApp1, "This is not a valid date; Enter in this format ('M/d/yyyy' or 'M/d/yy')")
                End If
            Else
                ErrorProvider1.Clear()
            End If
        ElseIf Me.tbApp1.Text.Trim = "" Then
            ErrorProvider1.Clear()
        End If
    End Sub

遮罩文本框使用

'Private Sub mtbApp1_TypeValidationCompleted(ByVal sender As Object, ByVal e As TypeValidationEventArgs) Handles mtbApp1.TypeValidationCompleted
        If Not Me.mtbApp1.Text = String.Empty Then
            If (Not e.IsValidInput) Then
                ErrorProvider1.SetError(mtbApp1, "The data you supplied must be a valid date in the format mm/dd/yyyy.")
            Else
                ' Now that the type has passed basic type validation, enforce more specific type rules. 
                Dim UserDate As DateTime = CDate(e.ReturnValue)
                If (UserDate = DateTime.Now) Then
                    ErrorProvider1.SetError(mtbApp1, "The data you supplied must be today's date")
                    e.Cancel = True
                End If
            End If
            ErrorProvider1.Clear()
        End If
    End Sub'

我注意到像03/18/2014这样的日期,当它加载回遮罩文本框时,它转换为31/82/014。我怎样才能解决这个问题?查询将字段拉回为

CONVERT(VARCHAR(10),Date,101) AS Date

在vb中设置为:

 Dim Approval1 As Date = Nothing

然后

 If Not IsDBNull(((WorklistsDS.Tables(0).Rows(0).Item("Approval1")))) Then
                Approval1 = ((WorklistsDS.Tables(0).Rows(0).Item("Approval1")))
            End If

,然后加载到遮罩文本框中:

If Approval1 <> Nothing Then
                Me.mtbApp1.Text = Approval1
            End If

您还可以使用

简化验证。
If IsDate(tbApp1.Text) Then 
    'valid date now just check if date falled within permitted range
    Dim CompDate As Date = CDate(tbApp1.Text)
    Dim MidDate As Date = *enter your min date here*
    Dim MaxDate As Date = *enter your max date here*
    If CompDate >= MinDate AndAlso CompDate <= MaxDate Then
        'Date is within permitted range
        ......
    Else
        'Date outside range
        'Display error
    End If
Else
   'text in tbApp1 is not a date
   'Display Error
End If

相关内容

  • 没有找到相关文章

最新更新