如果我没输入值,为什么会出错?

时间:2016-05-02 10:05:11

标签: c#

我的程序允许您从组合框中选择产品,项目数量,并允许您在文本框中写入价格,它将计算金额(项目数*价格),30%折扣和折扣后价格。

如果每个方框都已填满,则不会显示错误,但如果我将项目组合数量和/或价格清空,我会收到此错误:

  

抛出异常:mscorlib.dll中的'System.FormatException'   附加信息:输入字符串的格式不正确。

它会突出显示这一行:price = double.Parse(textBox1.Text);

private void button1_Click(object sender, EventArgs e)
{
    double amount, price, dis, 
    itemnum = double.Parse(comboBox2.Text),
    disrate = 30.0, totalafterdis;
    price = double.Parse(textBox1.Text);
    amount = price * itemnum;
    dis = amount * (disrate / 100);
    totalafterdis = amount - dis;

    textBox2.Text = amount.ToString();
    textBox3.Text = dis.ToString();
    textBox4.Text = totalafterdis.ToString();
}

我对C#并不熟悉,所以我不确定这是否是一个菜鸟错误。

2 个答案:

答案 0 :(得分:1)

如果您将textBox1留空,则会出现此错误。此异常基本上告诉您,您输入的值不适合解析为double类型。

这是一个例子。例如,您不能/不能将值" hello"解析为double类型。您的程序目前正在尝试将空/ null值解析为double,这是无效的。

您应该使用TryParse功能,如下所示:

double result = 0;
bool isValidDouble = double.TryParse(textBox1.Text, out result);
//logical code here to check value of result

如果textBox1的值对于解析无效,则不会抛出异常。

答案 1 :(得分:0)

如果你没有插入任何东西,那么它会显示一个空字符串,不能转换为整数,所以试试这个:

    double temp;
    if(double.TryParse(textBox1.Text, out temp)){
       price = double.Parse(textBox1.Text);
    }