无法从文本框将零转换为int32

时间:2010-02-26 18:07:40

标签: c# validation

我有以下代码对文本框进行一些非常简单的验证

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

当Text!= 0时,这可以正常工作,但是当Text == 0时,我得到一个FormatException,表示该字符串的格式不正确。我怎么能纠正这个?

5 个答案:

答案 0 :(得分:4)

你的问题在这里:

if (txtInStock.Text.Length == 0)
    txtOnOrder.Text = Convert.ToString(0);

您正在检查一个文本框的长度并设置另一个文本框的文本。将其更改为:

if (txtOnOrder.Text.Length == 0)
    txtOnOrder.Text = Convert.ToString(0);

另外,您是否有理由使用Convert.ToString(0)而非"0"?我不特别建议使用这种方法进行数据验证,但这应该可以解决问题。

答案 1 :(得分:2)

由于您无法确定文本框的用户是否会写出正确的整数,我建议使用Int32.TryParse()而不是Convert.ToInt32。因此,您将能够轻松处理错误案例。

答案 2 :(得分:1)

这段代码会吗?

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

希望这有帮助, 最好的祝福, 汤姆。

答案 3 :(得分:1)

这是一种处理空文本框的简单方法

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

我还会将文本框值保存到临时变量,然后进行比较,除非你想在文本框中为空时强制为0。

答案 4 :(得分:0)

int inStockAmt = Convert.ToInt32(string.IsNullOrEmpty(txtInStock.Text)?0:int.Parse(txtInStock.Text));