0

我正在使用以下代码:

textbox5.text =  (Double.Parse(TextBox1.text) 
                + Double.Parse(TextBox2.text) 
                + Double.Parse(TextBox3.text) 
                + Double.Parse(TextBox4.text)).ToString();

问题是如果我将任何文本框留空,那么它会显示异常。

有时我只想使用 2 个文本框。有时我只想使用 3 个文本框等等

4

5 回答 5

2

用于Double.TryParse避免这些情况的异常:

double val = 0.0;
double temp = 0.0;

if(Double.TryParse(TextBox1.text, out temp))
    val += temp;

//....

textbox5.text = val.ToString();
于 2012-12-19T07:38:01.363 回答
1
double d1, d2, d3, d4;
    txt5.Text = ((double.TryParse(txt1.Text, out d1) ? d1 : 0) +
    (double.TryParse(txt2.Text, out d2) ? d2 : 0) +
    (double.TryParse(txt3.Text, out d3) ? d3 : 0) +
    (double.TryParse(txt4.Text, out d4) ? d4 : 0)).ToString();

简单而简短。如果您不提供任何值,将返回 0。

于 2012-12-19T07:44:38.587 回答
0
double TryAddDoubleValue(TextBox textbox, int accumulator) {
  double value;
  if(double.TryParse(textbox.Text, out value)) {
    accumulator += value;
  }
  return accumulator;
}

double result = 0;
result = TryAddDoubleValue(TextBox1, result);
result = TryAddDoubleValue(TextBox2, result);
result = TryAddDoubleValue(TextBox3, result);
result = TryAddDoubleValue(TextBox4, result);

textbox5.Text = result.ToString();
于 2012-12-19T07:38:52.740 回答
0

您也可以尝试扩展方法。

public static class DoubleExtensions
{
    public static double ParseDouble (this string value)
    {
        if (string.IsNullOrWhitespace(value))
            return 0.0;

        return Double.Parse(value);
    }
}

您的代码将变为

textbox5.text = (TextBox1.text.ParseDouble() + 
            TextBox2.text.ParseDouble() +
            TextBox3.text.ParseDouble() +
            TextBox4.text.ParseDouble() ).ToString();
于 2012-12-19T07:39:30.693 回答
0

将 Double.Parse() 调用分开在它们自己的 try/catch 块中,保存每个调用的结果。对于每个 Parse() 调用,如果成功,则将该值包含在总数中,并将总数放入最终文本框中。

编辑:这是代码:

        double value1, value2, value3, value4;
        try
        {
            value1 = Double.Parse(textBox1.Text);
        }
        catch (Exception)
        {
            value1 = 0;
        }
        try
        {
            value2 = Double.Parse(textBox2.Text);
        }
        catch (Exception)
        {
            value2 = 0;
        }
        [...]
        double total = value1 + value2 + value3 + value4;
        textBox5.Text = total.ToString();

虽然上面很容易理解,但我会使用 Necrolis 的解决方案,因为它更优雅。

于 2012-12-19T07:34:42.003 回答