0

我使用以下代码在文本框中检查用户输入时出错:

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 设置回空字符串所致。我不知道如何防止这种情况发生,如果有人可以帮助清理这个凌乱的代码,我将不胜感激。

谢谢!

4

2 回答 2

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
于 2013-07-02T19:47:13.100 回答
0

你为什么将文本设置为空白呢?只需将文本与错误消息框保持原样,这样用户就知道不允许输入什么,并且如果他们再次尝试将得到相同的结果(即一致性,而如果您为他们更改输入,那么他们会得到当他们再次单击提交时出现不同的错误)。只是我的两分钱。

于 2013-07-02T19:53:01.810 回答