テキストボックスからゼロをINT32に変換することはできません
-
23-09-2019 - |
質問
テキストボックスの非常に簡単な検証を行うための次のコードがあります
if(txtInStock.Text.Length == 0)
txtInStock.Text = Convert.ToString(0);
if (txtInStock.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
int inStockAmt = Convert.ToInt32(txtInStock.Text);
int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);
これはテキスト!= 0の場合は正常に機能しますが、text == 0の場合は、文字列が適切な形式ではないというformatexceptionを取得します。どうすればこれを修正できますか?
解決
あなたの問題はここにあります:
if (txtInStock.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
1つのテキストボックスの長さをチェックし、別のテキストのテキストを設定しています。これに変更してください:
if (txtOnOrder.Text.Length == 0)
txtOnOrder.Text = Convert.ToString(0);
また、あなたが使用している理由はありますか Convert.ToString(0)
ただの代わりに "0"
?このアプローチをデータ検証に使用することは特にお勧めしませんが、これにより問題が修正されるはずです。
他のヒント
テキストボックスのユーザーが正しい整数を書くことを確認できないので、使用することをお勧めします int32.tryparse() convert.toint32の代わりに。したがって、エラーケースを簡単に処理できます。
このコードはしますか?
if(txtInStock.Text.Length == 0) txtInStock.Text = "0"; if (txtInStock.Text.Length == 0) txtOnOrder.Text = "0"; int inStockAmt = Convert.ToInt32(txtInStock.Text); int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);
これがトムに最も役立つことを願っています。
これは、空のテキストボックスを処理する簡単な方法です
if( string.IsNullOrEmpty( txtInStock.Text ))
txtInStock.Text = "0";
if( string.IsNullOrEmpty( txtOnOrder.Text ))
txtOnOrder.Text = "0";
int inStockAmt = Convert.ToInt32(txtInStock.Text);
int onOrderAmt = Convert.ToInt32(txtOnOrder.Text);
また、テキストボックスの値をTEMP変数に保存し、空のときにテキストボックスに0を強制したい場合に比較を行います。
int instockamt = convert.toint32(string.isnullorempty(txtinstock.text)?0:int.parse(txtinstock.text));
所属していません StackOverflow