/ /動的なテキストボックスに書き込む方法 - c#、.net、ユーザーコントロール

どのように動的な数のテキストボックスに書き込むのですか? - c#、.net、ユーザーコントロール

私は動的に作成されたテキストボックスを持つフォーム(Windowsフォーム)を持っています:

                    TextBox[] tbxCantServ = new TextBox[1];
int i;
for (i = 0; i < tbxCantServ.Length; i++)
{
tbxCantServ[i] = new TextBox();
}

foreach (TextBox tbxActualCant in tbxCantServ)
{
tbxActualCant.Location = new Point(iHorizontal, iVertical);
tbxActualCant.Name = "tbx" + counter++;
tbxActualCant.Visible = true;
tbxActualCant.Width = 44;
tbxActualCant.MaxLength = 4;
this.Controls.Add(tbxActualCant);
}

今私はデータでそれらを埋めるために、どうすればいいのですか?

動的にいくつかの名前のテキストボックスを作成した場合:

"tbxActualServ.Name =" txt "+ counter;"

どうすればそれらに書き込むことができますか?どうすればそれらにアクセスできますか?

たとえば、tbx1、tbx2およびtbx3を作成した場合、tbx1.Textに「1」、tbx2.Textに「2」、tbx3.Textに「3」を埋め込む「for」があります。

何かのようなもの

"for from i=0 to counter {
tbx[i] = i
}"

のような:

this.Controls.OfType<TextBox>().Where(r => r.Name == "tbx" + counter).¿¿Write??(r => r.Text = i).ToString();

ありがとう!

回答:

回答№1は1

次のようなことができます:

this.Controls.OfType<TextBox>().ToList<TextBox>().ForEach(tb => tb.Text = "bla bla");

回答№2の場合は1

イブニング、

あなたのタグから推測すると、これはWebフォームプロジェクトです。私はいくつかの他の前提を作らなければなりません。

私はあなたがコード内にテキストボックスを作成していることを推測しています。

TextBox tb1 = new TextBox();
form1.Controls.Add(tb1);

TextBox tb2 = new TextBox();
form1.Controls.Add(tb2);

これが事実なら、私はあなたが次のようなことをすることができると信じています:

for (int i = 0; i < 2; i++)
{
TextBox tb1 = page.findControl("tb" + i.ToString());
tb1.Text = "This is number " + i.ToString();
}

もう1つの選択肢があります。コントロールのコレクションを作成するときにコントロールのコレクションを保持しておくと、コレクションを反復することができます。

正直言って、あなたのコード全体の答えを与えることは難しいでしょう、私はこれがあなたが探しているものに答えていると思います。あなたの質問をより多くの詳細とより多くのコードで更新しないと(動的にコントロールを作成するコードが役に立ちます)


回答№3の場合は0

コントロールによってアクセスすることは可能ですが(WinForms、WPF、Webフォームなどを使用していますか?)、コントロールの配列を使用する方がはるかに優れたソリューションです。ここにいくつかの疑似C#:

MyControl[] controls = new MyControl[length];
for(int n = 0; n < controls.Length; n++)
{
controls[n] = new MyControl(...);
}

// ...

for(int n = 0; n < controls.Length; n++)
{
DoSomethingWith( controls[n] );
}