C# winform 我要制作一个form,里面添加了一个tabcontrol,在第一个tabpage中我添加了一些控件。

现在我想用一个添加按钮,点击按钮时,会自动增加一个tabpage,并且tabpage中有跟第一个tabpage中相同的控件。

我给你个代码吧,从原有的TabPage里根据类型,生成新的控件
foreach (Control c in tpg.Controls)
{
Type t = c.GetType();
Control a = new Control(t.Name);
//如果要控制新控件的名字,就要花些心思了,可以考虑从c.Name取原来控件的名字,然后加一些关键词,如:a.Name = "tpg1" + c.Name;
a.Location= c.Location
//这样出来的位置,和原来的位置是一样的
}
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-05-06
你可以把 第一个tabpage中的控件放在 usercontrol中

TabPage tpg = new TabPage(“新标签名”);
tpg.Controls.Add(usercontrol);
tabControl1.TabPages.Add(tpg);
tabControl1.SelectedTab = tpg;追问

我用这种方法,只有新增的tabpage中有控件,之前的tabpage中都没有控件了。

追答

要重新实例化

追问

如何重新实例化?

追答

把要放在第二个tabpage中的控件全部重新实例化 你的代码 拿出来看看

追问

Panel p1 = panel1;

double id = this.tabControl1.TabCount + 1;
TabPage MyTabPage = new TabPage(Convert.ToString("冷机" + id));

tabControl1.TabPages.Add(MyTabPage);
MyTabPage.Controls.Add(p1);

this.tabControl1.SelectedIndex = this.tabControl1.SelectedIndex + 1;
这是在添加按钮中写的代码,panel1是在tabpage1的

追答

你要把p1重新new一个
Panel p1 = panel1;
这样p1 始终就是一个

追问

我用 Panel p1 = new Panel();
p1.Equals(panel1);
或是Panel p1 = new Panel();
p1 = panel1;
都不行,定义完p1后,下面怎么给p1赋值?

追答

向楼下得循环所有控件。。。。
还是建议你 把panel1中的控件放在 用户控件中 然后每次都实例化一个用户控件就可以了

本回答被提问者和网友采纳
相似回答