获取并设置面板内控件的值,该面板本身位于tableLayout面板中

时间:2011-06-29 04:58:18

标签: c# .net winforms controls dynamically-generated

我有一个tableLayoutPanel,我在其中动态添加了Panels - Panels的名称是:

Panel1, 是Panel2 。 。 。 。 。 。 。 。 。 。 。 Panel10

现在,在这些动态添加的面板中,我正在动态添加更多控件,例如:

在Panel1中: LabelDate1,LabelTime1,LabelPicAdder1,LinkLabel1

在Panel2中: LabelDate2,LabelTime2,LabelPicAdder2,LinkLabel2 ......

现在,在按钮上单击,我想更改Panel1,Panel2内的控件的值,  但如果我这样做:

foreach ( Control ctrl in this.tableLayoutPanel )

,我能够将Panel变为ctrl变量,

但如何将这些Panel中的控件转换为某个变量并更改这些控件的TEXT属性.....

我的意思是,我如何获得Panels内部的控件,这些控件本身位于tableLayoutPanel内部

TableLayoutPanel ---->动态面板-----------> 动态控件 - 如何更改层次结构中最后一个对象的文本属性/ p>

2 个答案:

答案 0 :(得分:1)

您已将控件添加到面板中。所以你必须迭代每个小组:

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

通过在创建控件引用时存储控件引用而不是稍后尝试查找它们,可以简化代码,这很可能。

答案 1 :(得分: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 );
}