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

無効なエントリがあると、メッセージ ボックスが 2 回表示されます。これは、textbox.text を nullstring に設定し直したことが原因です。それが起こらないようにする方法もわかりません。また、誰かがこの厄介なコードをきれいにするのを手伝ってくれるなら、それはありがたいです。

ありがとうございました!

4

2 に答える 2

1

テキストが vbNullString と等しい場合は、Sub をそのままにしておくと簡単に修正できます。次の行を Sub の先頭に置きます。

If txtDeadLoadFactor.Text = vbNullString then Exit Sub

ユーザーがボックスを手動で空にする可能性があることを考えると、ポップアップが空のフィールドを検証しない方がよいでしょう。

EDIT:このリファクタリングされたコードはあなたを助けるかもしれません:

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

とにかくテキストを空白に設定するのはなぜですか?エラーメッセージボックスのテキストをそのままにしておくと、ユーザーはどの入力が許可されていないかを認識し、再試行しても同じ結果が得られます (つまり、一貫性があり、入力を変更すると、もう一度送信をクリックすると別のエラーが表示されます)。ちょうど私の2セント。

于 2013-07-02T19:53:01.810 に答える