2011-04-26 95 views
7

我有一个窗体中的选项卡控件,我希望能够点击一个选项卡,并在选项卡的身体区域我希望它显示另一个窗体作为嵌入组件。这可能吗?如果是这样,有人可以提供一个例子或链接到一个如何实现这个目标的例子吗?将窗体嵌入窗体中的tabcontrol

感谢

+1

你能否将*等*形式的内容的用户控制和嵌入用户控制代替? – 2011-04-26 20:59:03

+0

您认为将43个表单移动到用户控件有多难?或者更确切地说,将表单移动到用户控件是多么容易? – MBU 2011-04-26 23:58:46

+1

任何范围从*微不足道*到*不可能*取决于您的表单只有表格的多少,或者域逻辑在这里和那里混合的形式:) – 2011-04-27 07:22:40

回答

8

您可能正在寻找Tabbed MDI Child Forms

+0

您知道任何其他示例吗?那个不能解释一切如何运作的很好。 – MBU 2011-04-26 22:12:55

+1

这是实际的正确答案,该链接显示了如何使其工作。我测试了它,它的功能就像一个魅力。 – 2013-04-05 17:04:58

2

如果你不想使用MDI,你可以尝试把一切从需要的形式对用户的控制和在形式和选项卡中添加该用户控件。

4

我认为其他答案有正确的想法;标签式MDI可能就是你想要的。

有一种方法可以创建一个UserControl,它具有与表单相同的内容并在TabPage上使用该内容。

TabPage myTabPage = new TabPage(sometext); 
myUserControl = new myUserControlType(); 
myUserControl.Dock = DockStyle.Fill; 
myTabPage.Controls.Add(myUserControl); 
myTabControl.Add(myTabPage); 

http://bytes.com/topic/c-sharp/answers/270457-can-i-add-form-tabpage进一步详述;但我会先看看MDI的东西。

7

你可以嵌入一个表单,但它不是最好的选择。

更好地放置在UserControl上的内容并将其添加到TabPage。

4

将您的MainForm(父)设置为IsMDIContainer = true;

创建ChildForm的实例,并调用这个函数:

FormChild frmChild = new FormChild(); 
AddNewTab(frmChild); 

拷贝功能,以您的代码:

private void AddNewTab(Form frm) 
{ 

    TabPage tab = new TabPage(frm.Text); 

    frm.TopLevel = false; 

    frm.Parent = tab; 

    frm.Visible = true; 

    tabControl.TabPages.Add(tab); 

    frm.Location = new Point((tab.Width - frm.Width)/2, (tab.Height - frm.Height)/2); 

    tabControl.SelectedTab = tab; 

} 
+1

我删除了frm.Location并添加了WindowState = Maximized和FormBorderStyle = None。完美工作! – NTDLS 2016-09-08 16:01:23

+0

Phew - 帮了很大忙 - 谢谢。 – earthling42 2017-05-12 12:46:24