-3

我有根据用户输入(1-5)创建多个 NumericUpDowns 的程序。我知道如何获得总价值,但如何获得每个 NumericUpDown 的价值。我试图使用 label1 对此进行测试,但出现 NullReferenceException 错误。

   NumericUpDown test= new NumericUpDown();
    test.Name = "mynum" + Convert.ToString(count2);
    numericUpDown.Add(test);
    System.Drawing.Point i = new System.Drawing.Point(8, 20+ i * 25);
    test.Location = i;
    test.Size = new System.Drawing.Size(50, 20);
    this.Controls.Add(test);
    test.ValueChanged += new EventHandler(mytotal);

在这一行抛出 NullReferenceException 错误。

label1.Text = test.Controls["mynum0"].Text;
4

1 回答 1

1
 test.Name = "mynum" + Convert.ToString(count2);

您将其命名为“mynum”加上一个数字。所以你不能用 test.Controls["test0"] 找回它。将 indexer 参数修复为“mynum0”或 Name 属性分配。

您遇到的下一个问题是 NumericUpDown 控件没有功能性 Text 属性。它使用 Value 代替,一个数字而不是字符串。因此,您需要将控件强制转换为 NumericUpDown 才能访问 Value 属性。

 var nud = this.Controls["mynum0"] as NumericUpDown;
 if (nud == null) throw new Exception("I can't do that Dave, it isn't there");
 label1.Text = nud.Value.ToString();
于 2012-05-02T12:25:23.660 回答