TryParse Date 无效时的自定义错误消息

TryParse Date when not valid custom error message

我有一个 TryParse.Date() 验证来验证通过文本框传入的日期,如果它无效则显示自定义消息框警告。

然而,在测试而不是返回 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 它会显示异常消息而不是返回并进入循环?

有什么建议吗?

那不是 TryParse works。第二个参数需要一个日期对象。我强烈建议您打开 Option Strict。

您要找的是TryParseExact。它允许您设置自己的格式,但您仍然需要将日期对象作为参数传递。页面上的示例不错,但我认为您可以将参数设置为 Nothing。

Dim theDate As Date

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

注意: 基于 Rango 评论,即使您使用“/”作为分隔符。这可能会给具有不同文化的人带来问题。我强烈建议您正确设置区域性,而不是使用 Nothing。

如果您查看正在使用的 Date.TryParse 重载的定义,您会发现第二个参数应该是通过引用传递的 Date

这意味着第二个参数不是字符串。

您可以更改代码以正确使用第二个参数:

Dim dateParam As Date

If Not Date.TryParse(txtDate.Text, dateParam) Then
    MsgBox("Please enter a valid Date", MsgBoxStyle.Critical)
    Return
End If