如何复制选项卡

tzwsoho 2011-10-19 11:48:39
我在窗体上创建了一个TabControl,里面有1个选项卡页,卡页上带有很多控件,现在我想动态创建另一个选项卡,里面的内容与第一页相同,请问如何做到?说简单点就是完全复制第一页选项卡。。。
我现在是硬写,卡上有N个控件就new N个,然后设置属性,Controls.Add添加,但是以后想要增加控件的话将会越来越麻烦。网上有使用反射实现的代码,但是效果很不理想,很多属性比如Items不能复制过去,因为不是自定义控件,所以也不能实现ICloneable接口。。。
路过的高手请指教,先谢过。。。
...全文
120 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tzwsoho 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenlilinman 的回复:]
把你原来的那个选项卡做成独立的UserControl,然后动态加载到你的容器里就行了
[/Quote]
你的办法不错,我先试下,谢谢
tzwsoho 2011-10-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 unicorn_dsx 的回复:]
C# code

private void button1_Click(object sender, EventArgs e)
{
ListView lstView = new ListView();
lstView.Dock = DockStyle.Fill;
lstView.It……
[/Quote]
这个只适合少量控件的复制。。。我现在也是用这个方法,但是现在功能增加了很多,控件也增加了。。。
赳赳老陈 2011-10-19
  • 打赏
  • 举报
回复
把你原来的那个选项卡做成独立的UserControl,然后动态加载到你的容器里就行了
老董杂货铺 2011-10-19
  • 打赏
  • 举报
回复

private void button1_Click(object sender, EventArgs e)
{
ListView lstView = new ListView();
lstView.Dock = DockStyle.Fill;
lstView.Items.Add("item 1");
TabPage tab = new TabPage("next tab"); //选项卡文本
tab.Controls.Add(lstView);
tabPageList.TabPages.Add(tab);
tabPageList.SelectTab(Convert.ToInt16(tabPageList.TabPages.Count-1));
}
tzwsoho 2011-10-19
  • 打赏
  • 举报
回复
C#版的人好积极啊。。。一个下午就到了第二页了。。。

可以了,新建一个UserControl,名为TabPageEx,让此TabPageEx不继承UserControl而继承TabPage,打开要复制的选项卡相关Designer文件,复制有关的控件内容到TabPageEx的Designer文件里面(有些相关的事件Handler需要去掉),以后添加时直接new一个TabPageEx然后TabControl1.TabPages.Add进去就OK了。。。
不过以后如果要新增控件什么的还是需要按这样的步骤复制一次代码,而且事件Handler也需要手动挂上。。。

111,101

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧