新程序员C#-如何添加多个数字上下值?

新程序员C#-如何添加多个数字上下值?,c#,C#,我正在制作一个程序,它需要添加所有数字设置的值,并将其显示在标签上 数字升级是通过编程方式创建的,并添加到ArrayList中 ArrayList numericUpDownMy = new ArrayList(); numericUpDownMy.Add(new NumericUpDown()); System.Drawing.Point h = new System.Drawing.Point(120, 275+ i * 19);

我正在制作一个程序,它需要添加所有数字设置的值,并将其显示在标签上

数字升级是通过编程方式创建的,并添加到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的实际值。如有任何建议,我们将不胜感激。

更改此行:

  decimal total = (numericUpDownMy[1] as NumericUpDown).Value + 
                  (numericUpDownMy[2] as NumericUpDown).Value + 
                  (numericUpDownMy[3] as NumericUpDown).Value;
除此之外,不要使用
ArrayList
,使用
List
,以摆脱所有的强制转换或添加到末尾的集合中。我会这样写代码:

  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();
List numUpDnList=new List();
对于(int i=0;i<3;i++)
{
numericuptown numUpDn=新的numericuptown();
numUpDn.Location=新系统图纸点(120275+i*19);
numUpDn.Size=新系统图纸尺寸(50,20);
this.Controls.Add(numUpDn);
numUpDnList.Add(numUpDn);
}
十进制总数=numUpDnList.Sum(updn=>updn.Value);
labelScore.Text=total.ToString();
更改此行:

  decimal total = (numericUpDownMy[1] as NumericUpDown).Value + 
                  (numericUpDownMy[2] as NumericUpDown).Value + 
                  (numericUpDownMy[3] as NumericUpDown).Value;
除此之外,不要使用
ArrayList
,使用
List
,以摆脱所有的强制转换或添加到末尾的集合中。我会这样写代码:

  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();
List numUpDnList=new List();
对于(int i=0;i<3;i++)
{
numericuptown numUpDn=新的numericuptown();
numUpDn.Location=新系统图纸点(120275+i*19);
numUpDn.Size=新系统图纸尺寸(50,20);
this.Controls.Add(numUpDn);
numUpDnList.Add(numUpDn);
}
十进制总数=numUpDnList.Sum(updn=>updn.Value);
labelScore.Text=total.ToString();

谢谢,如果将其添加到“按钮点击事件”下,则此功能有效,但如何在numericUpDownMy中的值更改时始终更新此功能。您应将NumericUpDown列表声明为表单的私有成员,并在该列表中声明NumericUpDown ValueChanged事件总和,谢谢,但我仍然收到错误:在第行创建窗口句柄时出错:this.Controls.Add(numUpDn);在哪里添加控件?在button_click event下的form Load event中执行此操作,因为根据用户选择,它会创建2、3或4个NumericUpDowns谢谢,如果将其添加到button_click event下,这会起作用,但如何在numericUpDownMy中的值更改时使其始终更新。您应该将NumericUpDown列表声明为表单的私有成员,在NumericUpDown ValueChanged事件和列表中的所有内容上,谢谢,但我仍然得到错误:在第行创建窗口句柄时出错:this.Controls.Add(numUpDn);在哪里添加控件?在按钮点击事件下的表单加载事件中执行此操作,因为根据用户选择,它会创建2、3或4个数字上升下降,因此没有理由使用
ArrayList
——而是查看通用列表。没有理由使用
ArrayList
——而是查看通用列表。