Проверка DateTimePicker в vb.net - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь выяснить, как проверить DateTimePicker, т. Е. Если DateTimePicker равен нулю.Вот код

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 ]

2 голосов
/ 06 марта 2019

.Net DateTime переменные, такие как DTDOB.Value, являются типами значений . Это означает, что они никогда не могут быть null.

В VB.Net ключевое слово Nothing при использовании с типом значения будет соответствовать значению типа по умолчанию. Для значений DateTime это соответствует DateTime.MinValue или полуночи 1 января 0001 года.

Так что вы могли бы написать этот код для сравнения с DateTime.MinValue, но я думаю, что у вас есть намерение лучше выразить. Если у вас работает код, я не вижу проблем с ним. И если это не сработает, пожалуйста, объясните лучше в вопросе, как это терпит неудачу.

1 голос
/ 06 марта 2019

(Автор оставил небольшой кусочек кода в комментарии, который с тех пор был удален.)

Вы установили для 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
1 голос
/ 06 марта 2019

Возможно, вы ошиблись в вопросе, элемент управления DateTimePicker всегда имеет значение , отличное от Ничего , данное при инициализации формы.Это значение находится между MinDate и MaxDate .Если вы попытаетесь установить значение в Nothing, вы получите ошибку.По умолчанию значение DateTimePicker - это текущие дата и время.

Может возникнуть необходимость сохранить значение DTDOB.Value в переменной или в его теге и сравнить его со значением, которое имеется при нажатии кнопки.событие кнопки срабатывает.

0 голосов
/ 06 марта 2019

Сделано просто и не заботиться о метке, просто показывать значения:

    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
0 голосов
/ 06 марта 2019

Ваш код работает, но более эффективен, как этот.

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
...