C# 在windows窗体中将窗体嵌入到选项卡控件中

C# 在windows窗体中将窗体嵌入到选项卡控件中,c#,forms,tabcontrol,windows-forms-designer,C#,Forms,Tabcontrol,Windows Forms Designer,我在windows窗体中有一个选项卡控件,我希望能够单击选项卡,并在选项卡的主体区域中,将另一个窗体显示为嵌入组件。这可能吗?如果是这样的话,有人能提供一个例子或一个链接到如何实现这一点的例子吗?您可能正在寻找如果您不想使用MDI,您可以尝试将所有内容从所需的表单添加到用户控件,并在表单和选项卡中添加此用户控件。我认为另一个答案的想法是正确的;选项卡式MDI可能就是您想要的 有一种方法可以创建与表单内容相同的UserControl,并在TabPage上使用它 TabPage myTabPage

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

您可能正在寻找

如果您不想使用MDI,您可以尝试将所有内容从所需的表单添加到用户控件,并在表单和选项卡中添加此用户控件。

我认为另一个答案的想法是正确的;选项卡式MDI可能就是您想要的

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

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

更详细地说;但是我会先看看MDI的东西。

你可以嵌入表单,但这不是最好的选择

最好将内容放在UserControls上,并将其添加到TabPage中

将主窗体(父窗体)设置为IsMDIContainer=true

创建子窗体的实例并调用此函数:

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;

}

您能否将其他表单内容移动到用户控件并嵌入用户控件?您认为将43个表单移动到用户控件会有多困难?或者更确切地说,将表单移动到用户控件会有多容易?从琐碎到不可能的任何事情,都取决于您的表单在多大程度上只是表单,或者在多大程度上混合了域逻辑:)您知道其他示例吗?这并不能解释一切是如何运作的。这是真正正确的答案,这个链接展示了一切如何运作的。我对它进行了测试,效果很好。只是别忘了将选项卡控件的高度设置为24 pxI removed frm.Location并添加了WindowState=Maximized和FormBorderStyle=None。工作得很好!