テキストボックスからゼロをINT32に変換することはできません

StackOverflow https://stackoverflow.com/questions/2343750

  •  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));

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top