-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"] でそれを見つけることはできません。インデクサー引数を "mynum0" または Name プロパティの割り当てに修正します。

次に発生する問題は、NumericUpDown コントロールに機能する Text プロパティがないことです。文字列の代わりに値、数値を使用します。そのため、Value プロパティにアクセスするには、コントロールを NumericUpDown にキャストする必要があります。

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