0

すべてのnumericUpDownsの値を追加してラベルに表示する必要があるプログラムを作成しています。

numericUpDowns はプログラムで作成され、ArrayList に追加されます。

ArrayList numericUpDownMy = new ArrayList();
     numericUpDownMy.Add(new NumericUpDown());
        System.Drawing.Point h = new System.Drawing.Point(120, 275+ i * 19);          
        (numericUpDownMy[i] as NumericUpDown).Location = h;
        (numericUpDownMy[i] as NumericUpDown).Size = new System.Drawing.Size(50, 20);
        this.Controls.Add(numericUpDownMy[i] as NumericUpDown);
         int total = (((int)numericUpDown[0]) + ((int)numericUpDown[1]) + ((int)numericUpDown[2]) + ((int)numericUpDown[3]));
    labelScore.Text = total.ToString();

NumericUpDown の実際の値を取得できないため、明らかにこれは機能しません。アドバイスをいただければ幸いです。

4

1 に答える 1

3

この行を変更します:

  decimal total = (numericUpDownMy[1] as NumericUpDown).Value + 
                  (numericUpDownMy[2] as NumericUpDown).Value + 
                  (numericUpDownMy[3] as NumericUpDown).Value;

それに加えて、使用しないでくださいArrayList、使用 List<NumericUpDown>して、そのすべてのキャストを削除したり、最後にコレクションに追加したりします。私はこの方法でそのコードを書きます:

  List<NumericUpDown> numUpDnList = new List<NumericUpDown>();
  for (int i = 0; i < 3; i++)
  {
    NumericUpDown numUpDn = new NumericUpDown();
    numUpDn.Location = new System.Drawing.Point(120, 275 + i * 19);
    numUpDn.Size = new System.Drawing.Size(50, 20);
    this.Controls.Add(numUpDn);
    numUpDnList.Add(numUpDn);
  }
  decimal total = numUpDnList.Sum(updn => updn.Value);
  labelScore.Text = total.ToString();
于 2012-04-15T22:50:28.370 に答える