TryParse Дата, когда недопустимое пользовательское сообщение об ошибке - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть TryParse.Date() проверка для проверки даты, переданной через текстовое поле, и, если она не действительна, тогда выведите предупреждение о появлении пользовательского сообщения в поле Msg.

Однако при тестировании вместо возврата False и отображении окна сообщения просто отображается исключение ошибки с упоминанием String passed is not a valid Date

Вот мой фрагмент кода

If Not Date.TryParse(txtDate.Text, "dd/MM/yyyy")
    MsgBox("Please enter a valid Date", MsgBoxStyle.Critical)
    Return
End If

Так что, если я передам строковое значение 01/01/99d, оно будет показывать сообщение об исключении, а не возвращаться и идти внутри цикла?

Есть предложения?

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Если вы посмотрите на определение используемой вами перегрузки Date.TryParse, вы увидите, что второй параметр должен быть Date, который передается по ссылке:

Date.TryParse Definition

Это означает, что второй параметр не должен быть строкой.

Вы можете изменить свой код, чтобы правильно использовать второй параметр следующим образом:

Dim dateParam As Date

If Not Date.TryParse(txtDate.Text, dateParam) Then
    MsgBox("Please enter a valid Date", MsgBoxStyle.Critical)
    Return
End If
0 голосов
/ 10 декабря 2018

Это не так TryParse работает .Второй аргумент предполагает объект даты.Я настоятельно рекомендую вам включить Option Strict On.

То, что вы ищете, это TryParseExact .Это позволяет вам установить свой собственный формат, но вам все равно нужно передать объект даты в качестве параметра.Хороший пример на странице, но я думаю, что вы можете установить параметры как Nothing.

Dim theDate As Date

If Not DateTime.TryParseExact(txtDate.Text, "dd/MM/yyyy", Nothing, Nothing, theDate) Then
...

Примечание: Основано на комментарии Rango, даже если вы используете "/" в качестве разделителя.Это может вызвать проблемы у людей, которые имеют разную культуру.Я настоятельно рекомендую вам правильно настроить культуру вместо использования Nothing.

...