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

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 に答える
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 に答える