在vb.net中验证DateTimePicker

时间:2019-03-06 14:27:20

标签: vb.net validation datetimepicker

我试图找出如何验证DateTimePicker,即,如果DateTimePicker为null。这是代码

Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
If DTDOB.Value = Nothing Then
            MessageBox.Show("Enter the date")
        Else
            MessageBox.Show("Date Saved")
End If
End Sub

任何人都可以给我解决方案。 提前致谢。 请注意,DOTDOB是我的DateTimePicker

5 个答案:

答案 0 :(得分:2)

.Net DateTime变量,例如DTDOB.Value,是值类型。这意味着它们永远不会是null

在VB.Net中,Nothing关键字与值类型一起使用时,将等于该类型的默认值。对于DateTime值,它与DateTime.MinValue或0001年1月1日午夜相同。

因此,您可以编写此代码来与DateTime.MinValue进行比较,但是我认为您的意图更好。如果您使用的代码有效,则看不到问题。而且,如果它不起作用,请在问题中更好地解释。

答案 1 :(得分:1)

也许您放错了位置,DateTimePicker控件的 Value 总是不同于初始化表单时给出的 Nothing 。此值介于 MinDate MaxDate 之间。如果尝试将“值”设置为“无”,则会出现错误。默认情况下,DateTimePicker值为当前日期和时间。

一种方法可能是将DTDOB.Value的值保存在变量或Tag中,并将其与触发按钮的click事件时的值进行比较。

答案 2 :(得分:1)

(作者在评论中发布了一小段代码,此后已将其删除。)

您已将CustomFormat设置为空白字符串,以显示尚未选择一个值,这很好。如果要进行检查,则可以改用.Text属性,也可以检查.CustomFormat是否为“”。

这是一种可能的方法。选择之后,请更改为其他格式:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    DTDOB.CustomFormat = " " 'An empty SPACE
    DTDOB.Format = DateTimePickerFormat.Custom
End Sub

Private Sub DTDOB_ValueChanged(sender As Object, e As EventArgs) Handles DTDOB.ValueChanged
    ' once the user has selected a value, change the format so that a date will be displayed
    DTDOB.CustomFormat = "MM/dd/yy"
End Sub

Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSubmit.Click
    If DTDOB.CustomFormat = " " Then
        MessageBox.Show("Enter the date")
    Else
        ' ... do something with the Value() property ...
        Debug.Print(DTDOB.Value.ToString)
    End If
End Sub

答案 3 :(得分:0)

使它变得简单而不用关心标签,它只是显示值:

    Public Class Form1

        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            DTDOB.CustomFormat = " " 'An empty SPACE DTDOB.Format = DateTimePickerFormat.Custom

            DTDOB.Tag = DTDOB.Value   'Label displays the actual Value

            Label1.Text = DTDOB.Tag
        End Sub

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            If DTDOB.Value = DTDOB.Tag Then
                MessageBox.Show("Enter the Date")
            Else
                MessageBox.Show("Date Saved")
            End If
        End Sub
    End Class

答案 4 :(得分:-2)

您的代码有效,但更像这样。

Dim Input As String = DTDOB.Value.ToString()

Dim dateTime2 As DateTime

If DateTime.TryParse(Input, dateTime2) Then
    Console.WriteLine(dateTime2)
Else
    Console.WriteLine("Invalid")
End If