2017-02-06 5 views
0

これは私が今持っているもので、正しい文字列ではない入力文字列 "というエラーが発生しました。私はVBネットに新しいです。ラベルとテキストボックスを掛け合わせて、結果をvb netの別のラベルに表示するには?

 Dim total1a = Integer.Parse(lblPrice1a.Text) * Integer.Parse(txtQuantity1a.Text) 
    Dim value As String = Convert.ToString(total1a) 
    lblTotal1a.Text = value 
+0

Integer.Parseの代わりに「Val」を試すことができます。文字列は何ですか? – Slai

+0

10進数を扱う場合は、 'Double.Parse()'または 'Decimal.Parse()'を使うべきです。 –

答えて

0

あなたは正しい形式で

入力文字列ではなく取得しているエラーは、解析している2つの文字列のいずれかを解析することができないことを意味します。

Dim total1a As Integer 
Dim price As Integer 
Dim quantity As Integer 
Try 
price = Cint(lblPrice1a) 
Catch ex As Exception 
'Code for whatever happens if it goes wrong 
End Try 
Try 
quantity = Cint(lblQuantity1a) 
Catch ex As Exception 
'Code for whatever happens if it goes wrong 
End Try 
total1a = price*quantity 
lblOutput.Text = Cstr(total1a) 

これらのtry catchステートメントは、たとえば、ユーザーが数量に「popcorn」を入力すると例外がスローされないようにします。 CIntも私の経験ではInteger.Parse()と同様に動作します。

+1

地域設定に関する質問がある場合は、パーサーが優れています。これはおそらくテキストボックスの値から読み取るときは重要ではありませんが、現在のユーザーの設定と数字の形式が異なるファイルやその他のソースから読み取るときにはそうです。 –

+0

それは本当ですが、それはおそらくあまり差がないでしょう? –

+0

あなたは正しいです..ユーザーがコンピュータの設定に間違った数千または間引き文字を入力した場合、PEBKACエラーだけで何もできません。ただし、テキストボックスのキーフィルタを使用して、ユーザーの間違いを制限することを強く推奨します... LOL –

2

以下のコードを試してください。ベストプラクティスとして使用するTryParseデータ型変換の方法。 labelは編集できませんので、elseコードで例外がスローされます。

Dim price As Integer 
Dim quantity As Integer 

If Integer.TryParse(lblPrice1a.Text, price) Then 
    If Integer.TryParse(txtQuantity1a.Text, quantity) Then 
     lblTotal1a.Text = (price * quantity).ToString 
    Else 
     MessageBox.Show("Please enter valid quanity.") 
    End If 
Else 
    Throw New Exception("lblPrice1a price is not an integer.") 
End If 
関連する問題