0

我有一个 tableLayoutPanel,我在其中动态添加了面板——面板的名称是:

面板 1,面板 2。. . . . . . . . . . 面板10

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

在 Panel1 中: LabelDate1、LabelTime1、LabelPicAdder1、LinkLabel1

在 Panel2 中: LabelDate2、LabelTime2、LabelPicAdder2、LinkLabel2……

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

foreach ( Control ctrl in this.tableLayoutPanel )

,我只能让面板进入 ctrl 变量,

但是如何将这些面板中的控件放入某个变量并更改这些控件的 TEXT 属性.....

我的意思是,我如何获得面板内的控件,这些控件本身就在 tableLayoutPanel 内

TableLayoutPanel---->Dynamic Panels------------> Dynamic Controls --如何更改层次结构中最后一个对象的文本属性

4

2 回答 2

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 回答
1

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

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

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

于 2011-06-29T05:07:35.563 回答