我有一个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>
答案 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 );
}