私は動的に作成されたテキストボックスを持つフォーム(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] );
}