我使用以下代码错误地检查文本框中的用户输入:
Private Sub txtDeadLoadFactor_TextChanged(sender As Object, e As EventArgs) Handles txtDeadLoadFactor.TextChanged
Dim invalidEntry As Boolean
If IsNumeric(txtDeadLoadFactor.Text) And Not txtDeadLoadFactor.Text = vbNullString Then
If Not txtDeadLoadFactor.Text > 0 Then
invalidEntry = True
End If
Else
invalidEntry = True
End If
If invalidEntry Then
MsgBox("Please only enter numeric data greater than 0 in all fields!", MsgBoxStyle.Critical, "Invalid Input!")
txtDeadLoadFactor.Text = vbNullString
invalidEntry = False
Else
gDeadLoadFactor = txtDeadLoadFactor.Text
End If
End Sub
在无效条目上弹出两次消息框。这是因为将textbox.text设置回nullstring。我不知道如何防止这种情况发生,如果有人可以帮助清理这个凌乱的代码,我们将不胜感激。
谢谢!
答案 0 :(得分:1)
如果文本等于vbNullString,快速解决方法是离开Sub。把这一行放在Sub的开头:
If txtDeadLoadFactor.Text = vbNullString then Exit Sub
鉴于用户可能会手动清空该框,如果弹出窗口没有验证空字段会更好。
编辑:这个重构的代码可以帮助您:
If txtDeadLoadFactor.Text = vbNullString then Exit Sub
If Not(IsNumeric(txtDeadLoadFactor.Text)) OrElse txtDeadLoadFactor.Text <= 0 then
MsgBox("Please only enter numeric data greater than 0 in all fields!", MsgBoxStyle.Critical, "Invalid Input!")
txtDeadLoadFactor.Text = vbNullString
Exit Sub
End If
gDeadLoadFactor = txtDeadLoadFactor.Text
答案 1 :(得分:0)
为什么要将文本设置为空白?只需将文本原样保留在错误消息框中,这样用户就会知道哪些输入是不允许的,并且如果再次尝试它们将获得相同的结果(即一致性,而如果您更改它们的输入,那么它们会得到当他们再次点击提交时出现不同的错误)。只是我的两分钱。