繁体   English   中英

System.FormatException: '输入字符串的格式不正确。' WinForms

[英]System.FormatException: 'Input string was not in a correct format.' WinForms

我收到此错误:此异常最初是在此调用堆栈中引发的:有人可以帮助我吗? 我尝试用Double.Parse替换Convert.ToDouble我已经定义了price_salad和其他的,但我无法让它工作? 这是在 c#

[External Code]
menu1.frm_item.button4_Click(object, System.EventArgs) in items.cs
[External Code]
menu1.Program.Main() in Program.cs . 

谁能帮我? 我尝试用Double.Parse替换Convert.ToDouble我已经定义了price_salad和其他的,但我无法让它工作? 这是在 c#

private void button4_Click(object sender, EventArgs e)
{
    double[] itemcost = new double[13];`
    itemcost[0] = Convert.ToDouble(textBox5.Text) * price_salad1;
    itemcost[1] = Convert.ToDouble(textBox6.Text) * price_salad2;
    itemcost[2] = Convert.ToDouble(textBox7.Text) * price_salad3;
    itemcost[3] = Convert.ToDouble(textBox8.Text) * price_pizza1;
    itemcost[4] = Convert.ToDouble(textBox10.Text) * price_pizza2;
    itemcost[5] = Convert.ToDouble(textBox9.Text) * price_pizza3;
    itemcost[6] = Convert.ToDouble(textBox11.Text) * price_dessert1;
    itemcost[7] = Convert.ToDouble(textBox13.Text) * price_dessert2;
    itemcost[8] = Convert.ToDouble(textBox12.Text) * price_dessert3;
    itemcost[9] = Convert.ToDouble(textBox14.Text) * price_drinks1;
    itemcost[10] = Convert.ToDouble(textBox16.Text) * price_drinks2;
    itemcost[11] = Convert.ToDouble(textBox15.Text) * price_drinks3;
}

我猜格式异常是由包含无效或空值的文本框引起的。 要解决此问题,您需要确保 TextBox 值在计算中使用它们之前是有效的。 我将使用内联的 IF 语句来演示这一点。

例子:

double[] itemcost = new double[13];` //You shouldn't use double for storing cost
int qty=0;
itemcost[0] = ( Int32.TryParse(textBox5.Text, out qty) )? qty * price_salad1: 0d;

Int32.TryParse 方法尝试将数字的字符串表示形式转换为 integer。 如果返回true,则转换成功,否则返回false。 代码片段使用内联 IF 语句首先检查转换是否有效。 如果是,则执行计算,否则返回 0;

您应该查看的参考资料:

Int32.TryParse() Function

? 运算符(在线 IF)

存储货币值的最佳数据类型

十进制数据类型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM