0

Panelsを動的に追加したtableLayoutPanelがあります---Panelsの名前は次のとおりです。

Panel1、Panel2。。。。。。。。。。。Panel10

現在、これらの動的に追加されたパネルで、次のようないくつかのコントロールを動的に追加しています。

Panel1の場合: LabelDate1、LabelTime1、LabelPicAdder1、LinkLabel1

Panel2の場合: LabelDate2、LabelTime2、LabelPicAdder2、LinkLabel2 ..... ..

ここで、ボタンをクリックすると、Panel1、Panel2内のコントロールの値を変更したいのですが、これを行うと:

foreach ( Control ctrl in this.tableLayoutPanel )

、私はパネルをctrl変数に入れることしかできません、

しかし、これらのパネル内のコントロールをいくつかの変数に入れて、それらのコントロールのTEXTプロパティを変更する方法.....

つまり、パネル内にあるコントロールを取得するにはどうすればよいですか。パネル自体はtableLayoutPanel内にあります。

TableLayoutPanel ----> Dynamic Panels -----------> DynamicControls-- 階層内のこの最後のオブジェクトのテキストプロパティを変更する方法

4

2 に答える 2

1

パネルにコントロールを追加しました。したがって、各パネルを繰り返す必要があります。

foreach ( Control panel in this.tableLayoutPanel ) {
    foreach ( Control ctrl in panel) {
        // etc..
    }
}

コントロール参照を後で見つけようとするのではなく、作成時に保存することでコードを単純化できる可能性があります。

于 2011-06-29T05:07:35.563 に答える
1

このような再帰関数を作成して、親と子のコントロールのすべてのコントロールを読み取ります

 public void GetAllControl(Control parent)
        {
            //Dosomething with parent like setting text or blah blah blah

            foreach (Control item in parent.Controls)
            {
                GetAllControl(parent);
            }
        }

必要な場所でこのループを呼び出します

foreach ( Control ctrl in this.tableLayoutPanel )
{
GetAllControl(ctrl );
}
于 2011-06-29T05:15:05.400 に答える