C#更新文本框并在计算后转换其中的数据时出错

C#更新文本框并在计算后转换其中的数据时出错,c#,C#,我是C#新手,对代码有点问题 private void tbSold_TextChanged(object sender, TextChangedEventArgs e) { tbSold.Text = tbSold.Text.Replace(',', '.'); tbSold.Select(tbSold.Text.Length, 0); double BO = Convert.ToDouble(tbBought

我是C#新手,对代码有点问题

            private void tbSold_TextChanged(object sender, TextChangedEventArgs e)
    {
        tbSold.Text = tbSold.Text.Replace(',', '.');
        tbSold.Select(tbSold.Text.Length, 0);


        double BO = Convert.ToDouble(tbBought.Text);
        double SO = Convert.ToDouble(tbSold.Text);
        double TOT = ((SO / BO) * 100);
        tbTotal.Text = Convert.ToString(TOT +"%");
    }
现在是解释和问题。代码的第一部分是用点替换coma,这样我就可以在SQLExpress中插入数据

但我也想知道tbTotal中显示的百分比。我这里有两个问题。一个是,如果我删除tbsell文本框中的所有字符,就会出现错误。不管它们是否是十进制的。。。第二个是,如果有一个十进制值,我不会得到正确的值

如果我将转换放在buttonClick事件中以插入数据库,我会插入数据,但之后会出现错误


我现在可能遗漏了一些简单但无法理解的内容

您无法将空白字符串(
“”
)转换为双精度-您将得到一个
格式异常
。我会在
bunded
字段中添加一些空白字符串检查(以及
0

private void tbSold_TextChanged(object sender, TextChangedEventArgs e)
{
    tbSold.Text = tbSold.Text.Replace(',', '.');
    tbSold.Select(tbSold.Text.Length, 0);


    double BO; 
    bool boughtPrased = double.TryParse(tbBought.Text, out BO);
    // what should you do if the parse fails?

    double SO;
    bool soldParsed = double.Parse(tbSold.Text, out SO);
    // what should you do if the parse fails?

    double TOT = (SO / BO);  // convert to percentage in format below
    // what do you do if BO is 0?

    // display as percentage with two decimal digits
    tbTotal.Text = string.Format("{0:P2}",TOT);
}

你得到了什么错误?在哪一行?我可以运行应用程序…但是如果我在tbsell中输入一些值,然后删除该值,我会在mscorlib.dll中得到一个类型为“System.FormatException”的未处理异常。其他信息:输入字符串的格式不正确。非常感谢您的帮助…我没有收到任何错误现在,我将禁用在数据库中插入数据的按钮,这样我就不会在状态栏中出现意外错误和错误消息。如果我没有错,我应该使用“If(double.TryParse(tbbundle.Text,out BO)==false{}”