2

ページロードでこれがあるとします:

Label lblc = new Label();

for (int i = 1; i <= 10; i++)
{
    lblc.Text = i.ToString();
    this.Controls.Add(lblc);
}

実行時にこれらの各コントロールを操作するにはどうすればよいですか?

したい:

  • テキストを設定/取得します。

  • 特定のコントロール (この場合は Label) を参照します。

4

3 に答える 3

4

ラベルの数がわかっている場合は配列を使用し、

Label[] lblc = new Label[10];

for (int i = 0; i < 10; i++)
{
    lblc[i] = new Label() { Text = (i + 1).ToString() };
    this.Controls.Add(lblc[i]);
}

次に、テキストボックス 1 を lblc[0] で参照し、テキストボックス 2 を lblc[1] で参照します。または、ラベルの数がわからない場合は、いつでもこのようなものを使用できます。

List<Label> lblc = new List<Label>();
for (int i = 0; i < 10; i++)
{
    lblc.Add(new Label() { Text = (i + 1).ToString() });
    this.Controls.Add(lblc[i]);
}

配列と同じ方法で参照するだけで、メソッドの外側でリストまたは配列を宣言して、プログラム全体にスコープを持たせることができます。

ラベルだけでなく TextBoxes も実行したい場合、同じリストを介して実行できるすべてのコントロールを追跡するために、各ラベルに独自のペット TextBox があるこの例を見てください。

List<Control> controlList = new List<Control>();
        for (int i = 0; i < 10; i++)
        {
            control.Add(new Label() { Text = control.Count.ToString() });
            this.Controls.Add(control[control.Count - 1]);
            control.Add(new TextBox() { Text = control.Count.ToString() });
            this.Controls.Add(control[control.Count - 1]);
        }

幸運を!追加する必要があるものは何でも聞いてください。

于 2013-06-06T08:46:31.540 に答える
1

このコードでは、コントロールを 1 つだけ作成します。なぜなら、ラベルオブジェクトの作成はループの外にあるからです。次のように使用できます。

for (int i = 1; i <= 10; i++)
{
    Label lblc = new Label();
    lblc.Text = i.ToString();
    lblc.Name = "Test" + i.ToString(); //Name used to differentiate the control from others.
    this.Controls.Add(lblc);
}
//To Enumerate added controls
foreach(Label lbl in this.Controls.OfType<Label>())
{
    .....
    .....
}
于 2013-06-06T08:46:53.910 に答える
1

を設定してNameから、それを使用してコントロールを区別することをお勧めします

for (int i = 1; i <= 10; i++)
{
    Label lblc = new Label();
    lblc.Name = "lbl_"+i.ToString();
    lblc.Text = i.ToString();
    this.Controls.Add(lblc);
}

いつ:

public void SetTextOnControlName(string name, string newText)
{
  var ctrl = Controls.First(c => c.Name == name);
  ctrl.Text = newTExt;
}

使用法:

SetTextOnControlName("lbl_2", "yeah :D new text is awsome");
于 2013-06-06T08:46:12.980 に答える