0

2 つのテキスト ボックス textbox_price と textbox_quantity に数値が含まれているか、値がまったく含まれていないかを確認し、その場合は特定のエラー メッセージを表示する必要があります。textbox_item には、数字以外の文字のみを使用できます。現在、以下のORの連結を使用して動作していますが、これが効率的で良いかどうか疑問に思っていました. ご覧のとおり、小切手は長くて読みにくいです。助けていただければ幸いです。

If textbox_item.Text = "" Or textbox_price.Text = "" Or textbox_quantity.Text = "" Or          IsNumeric(textbox_price.Text) = False Or IsNumeric(textbox_quantity.Text) = False Or IsNumeric(textbox_item.Text) = True Then
        MsgBox("Please fill out every textbox with valid data", MsgBoxStyle.Information, "Invalid entry")
        textbox_price.Text = ""
        textbox_item.Text = ""
        textbox_quantity.Text = ""
        Exit Sub
    End If
4

3 に答える 3

2

If...Then(実行したいコードではなく) ステートメントのロジックだけを見ると、次のように変更します。

If textbox_item.Text = "" OrElse textbox_price.Text = "" OrElse textbox_quantity.Text = "" OrElse _
    IsNumeric(textbox_price.Text) = False OrElse IsNumeric(textbox_quantity.Text) = False OrElse IsNumeric(textbox_item.Text) = True Then
    'Code to execute goes here
End If

基本的には都度変更しOrOrElseください。このように、条件の 1 つが満たされるとすぐに、他の条件はチェックされません。

OrElseVB .NET で説明している短い記事を次に示します。

MSDN - OrElse 演算子

于 2012-10-01T17:01:54.693 に答える
2

長い If..Then..ElseIf チェーンを表示したいので、エラー メッセージが問題に固有のものになる可能性があります。

If textbox_Item.Text = "" Then
    msgbox(errmsg1)
Elseif Not IsNumberic(textbox_Item.Text) Then
    msgbox(errmsg2)
Elseif ....
于 2012-10-01T17:04:45.227 に答える
0

IsNumeric の実装が内部で何をしているのかを確認したい場合があります。また、If ブロックの後に何をしているのかについても質問します。チェック後に値を使用することを計画している場合は、Decimal.TryParse (または使用したい数値の tryparse) を使用し、else 句で検証プロンプトを送信するのが最善の方法です。

Dim price As Decimal
Dim quantity As Integer
Dim item as As Double

If Decimal.TryParse(textbox_price.text, price) 
   AndAlso Integer.TryParse(textbox_quantity.Text, quantity)
   AndAlso Double.TryParse(textbox_item.Text, item) Then
   '' Do something with the values
Else
   '' Send validation prompt
End If

このオプションの利点は、値を 2 回 (IsNumeric と TryParse) 解析しないことです。思い出したように、IsNumeric は解析を試みますが、結果を破棄するだけです。結果が必要な場合は、TryParse を使用します。TryParse は null と空の文字列も処理するため、これらのテストを明示的に行う必要もありません。

于 2012-10-01T17:58:39.720 に答える