十进制类型文本框的输入字符串格式不正确

时间:2014-02-12 17:12:42

标签: c# asp.net

只要文本框为空,我就会在以下代码行中收到以上错误:

decimal Qty = Convert.ToDecimal(txtQtyforAnalysis.Text);

有人可以告诉我可能出错的地方并为其提供解决方案吗?

4 个答案:

答案 0 :(得分:1)

  

我在下面的代码行中遇到上述错误   文本框为空:

如果您使用Convert.ToDecimalDecimal.Parse,则会出现异常,如果您想避免异常并检查其是否包含任何有效输入,请使用decimal.TryParse

decimal Qty;
if(!decimal.TryParse(txtQtyforAnalysis.Text, out Qty)
{
   //Some invalid input , empty string or invalid decimal number
}
else
{
  //valid decimal number
}

如果您想检查TextBox.Text是否为空字符串,可以使用string.IsNullOrEmptystring.IsNullOrWhiteSpace (随.Net framework 4.0或更高版本提供)

if(string.IsNullOrWhiteSpace(txtQtyforAnalysis.Text))
{
 //Don't do parsing
}

答案 1 :(得分:1)

你期待发生什么?如果你想要“”表示QTY为0,那么就这样做:

Decimal qty = String.IsNullOrEmpty(txtQtyforAnalysis.Text) ? 0 : Convert.ToDecimal(txtQtyforAnalysis.Text);

答案 2 :(得分:0)

如果没有任何内容,您可以将默认值设置为0,这假设您希望这样做。

decimal Qty = Convert.ToDecimal(txtQtyforAnalysis.Text == "" ?  "0" : txtQtyforAnalysis.Text);

或者只使用Decimal.TryParse

decimal Qty;

if (decimal.TryParse(txtQtyforAnalysis.Text, out Qty))
{
    //it worked
}

答案 3 :(得分:0)

试试这个

 If IsNumeric(txtQtyforAnalysis.Text)
 {
   decimal Qty = Convert.ToDecimal(txtQtyforAnalysis.Text);
  }