如何在winform的选项卡控件中找到动态添加的TableLayoutPanel控件

时间:2015-06-03 15:50:42

标签: findcontrol tablelayoutpanel

需要帮助查找在运行时添加到winform的选项卡控件的TableLayoutPanel。请在下面找到示例代码。任何帮助将不胜感激。

private void GenerateControls()
{
   TableLayoutPanel tp = new TableLayoutPanel();
   tp.Name = "tpName";
   tab1.Controls.Add(tp);
}

private void findTablePanelControl()
{
    TableLayoutPanel tp = (TableLayoutPanel)this.Controls.Find("tpName", true)[0];
    string name = tp.Name;
}

我收到以下错误消息:索引超出了数组的范围。

我也尝试了以下代码,但在“string name =”行上得到此错误(对象引用未设置为对象的实例):

TableLayoutPanel tpParseSchema = (TableLayoutPanel)this.Controls.Find("tpParseSchema", true).FirstOrDefault();

1 个答案:

答案 0 :(得分:0)

我发现了问题。提供的示例代码实际上将起作用。我的真实代码的问题是我错误地键入了TableLayoutPanel的错误名称值。我最终通过递归地逐步执行选项卡控件的所有子控件来解决这个问题。这是我如何做到的示例代码。

foreach (Control ctrl in tab1.Controls)
{
   string ctrlname = ctrl.Name;
}