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
我有一个 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