【问题标题】:How do I find a dynamically added TableLayoutPanel control in tab control of a winform如何在winform的选项卡控件中找到动态添加的TableLayoutPanel控件
【发布时间】:2015-06-03 15:50:41
【问题描述】:

需要帮助查找在运行时添加到 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;
}

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

我也尝试了以下代码,但在“字符串名称=”行上出现此错误(对象引用未设置为对象的实例):

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

【问题讨论】:

  • 我发现了问题。提供示例代码实际工作。我的真实代码的问题是我错误地为面板输入了错误的名称值。我最终通过递归遍历选项卡控件的所有子控件来解决这个问题。这是我如何做到这一点的示例代码。

标签: findcontrol tablelayoutpanel


【解决方案1】:

我发现了问题。提供的示例代码实际上可以工作。我的真实代码的问题是我错误地为 TableLayoutPanel 键入了错误的名称值。我最终通过递归遍历选项卡控件的所有子控件来解决这个问题。这是我如何做到这一点的示例代码。

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

【讨论】:

    猜你喜欢
    • 2011-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多