2010-06-01 68 views
1

在我的previous question我可以添加一个设计时间面板到运行时的标签页,我的代码看起来像这样,它工作正常。将相同的面板添加到多个TabPages

 tabControl1.SuspendLayout(); 
     tabControl1.TabPages[0].Controls.Add(panel1); 
     tabControl1.ResumeLayout(); 

但现在我需要做的是这样的:

tabControl1.SuspendLayout(); 
    tabControl1.TabPages[0].Controls.Add(panel1); 
    tabControl1.TabPages[1].Controls.Add(panel1); 
    tabControl1.TabPages[2].Controls.Add(panel1); 
    tabControl1.ResumeLayout(); 

刚刚在运行时我可以知道有多少这样的TabPages我需要的。但现在测试我假设我将有三个的TabPages

问题是面板只被添加到最后标签页, 我怎样才能解决这个问题?我希望它被添加到所有标签页 谢谢。

回答

5

你不能。一个控件一次只能有一个父对象。幸运的是,一次只能看到一个标签页,所以我猜你可以在显示页面之间移动面板?另一方面,如果面板要位于所有页面的相同位置,也许它不应该将置于的选项卡控件中,而是将置于之上呢?

+0

好的,谢谢,所以我想我应该这样做:面板的父应该首先是TabPage [0],因为至少我会有一个页面,用户会首先看到它。 ...但在TabPageChange事件我应该将该面板的父母更改为TabPage [currentTabIndex] 这是好吗? – Bohn 2010-06-01 21:26:53

+0

@BDotA:我认为应该有效。我会试一试,看看它是如何运作的。 – 2010-06-01 21:28:56

+0

@FredrikMörk优秀的概念 - 我能够将其应用到我的vb.net项目中:我发现的一件事情可能需要澄清的是,当你说“在控件之上”时,我发现更容易定位我的面板,它重叠在选项卡控件的顶部,然后我调整了面板的大小以适应选项卡的范围。我最初的尝试就是将面板放置在标签的顶部(和内部)上 - 它需要放在标签的外面才能使用。 – redhotspike 2012-12-06 14:36:43

相关问题