[英]C# WinForms, Adding tabs to a tab control, then adding a control to each tab programmatically
我有一个表格应该迭代一个列表,并为列表中的每个项目添加一个选项卡到选项卡控件。 然后,我有一个应该添加到每个选项卡的组框。
选项卡添加正常,但Group Box仅添加到最后一个选项卡(调试器也显示每个选项卡的Controls集合为空,除了最后一个选项卡)。
任何见解?
foreach (String company in requiredGasComps)
{
tabCont.TabPages.Add(company,company);
}
foreach (TabPage tabpage in tabCont.TabPages)
{
tabpage.Controls.Add(groupBox);
}
foreach ( TabPage tabpage in tabCont.TabPages)
{
Control [] a = tabpage.Controls.Find("currentSupplier95",true);
//Will always find 0 or 1 control
if (a.Length > 0)
{
a[0].Text = tabpage.Text;
}
}
this.Controls.Add(tabCont);
我想你在每个Tabpage上都放了相同的groupBox。 尝试:
foreach (TabPage tabpage in tabCont.TabPages)
{
GroupBox groupBox = new GroupBox();
tabpage.Controls.Add(groupBox);
}
控件只能属于一个集合,或者 - 换句话说 - 只能有一个父亲。 因此,您无法将相同的GroupBox添加到多个选项卡,您必须创建不同的GroupBox实例,然后将它们添加到选项卡。
我建议修改代码以创建要添加的标签页,然后您可以同时添加组框
foreach (String company in requiredGasComps)
{
TabPage t = new TabPage(){Name = company, Text = company};
Groupbox gb = groupBox.CreateNewBasedFromThis();
t.Controls.Add(gb);
tabCont.TabPages.Add(t);
}
这也会更有效,因为您不必迭代两次
您也可以创建一个扩展方法,以创建一个基于旧组的新组框
public static GroupBox CreateNewBasedFromThis(this GroupBox gb)
{
var newGb = new GroupBox;
//set new properties that you wish to copy
return newGb;
}
谢谢大家,然后我最终创建了一个用户控件
foreach (TabPage tabpage in tabCont.TabPages)
{
EnergyTable table = new EnergyTable();
tabpage.Controls.Add(table);
}
奇迹般有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.