我有一个应该遍历列表的表单,并且对于列表中的每个项目,向选项卡控件添加一个选项卡。然后,我有一个应该添加到每个选项卡的组框。
选项卡添加正常,但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);
答案 0 :(得分:1)
我认为你在每个Tabpage上都放了相同的groupBox。尝试:
foreach (TabPage tabpage in tabCont.TabPages)
{
GroupBox groupBox = new GroupBox();
tabpage.Controls.Add(groupBox);
}
答案 1 :(得分:1)
控件只能属于一个集合,或者 - 换句话说 - 只能有一个父亲。因此,您无法将相同的GroupBox添加到多个选项卡,您必须创建不同的GroupBox实例,然后将它们添加到选项卡。
答案 2 :(得分:1)
我建议您修改代码以创建要添加的标签页,然后您可以同时添加组框
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;
}
答案 3 :(得分:0)
谢谢大家,我最终创建了一个用户控件,然后
foreach (TabPage tabpage in tabCont.TabPages)
{
EnergyTable table = new EnergyTable();
tabpage.Controls.Add(table);
}
像魅力一样。