我正在制作一个程序,需要添加所有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的实际值。任何建议都将不胜感激。
发布于 2012-04-16 06:50:28
更改此行:
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();https://stackoverflow.com/questions/10166846
复制相似问题