选项卡控件-更改为不同的表单(C#)

选项卡控件-更改为不同的表单(C#),c#,.net,windows,C#,.net,Windows,我在空白表单上有一个选项卡控件,尽管当我更改选项卡时,有一种方法可以在单击其他选项卡时更改表单。请参见以下说明: 例如,如果我单击“tabPage2”,我将看到Form2.cs是。只需将Form2设置为无边框,并将TopLevel更改为False,然后就可以将其添加到tabPage2.Controls集合中,就像普通表单一样。也可以添加DockStyle来填充该表单 简单演示: private void tabControl1_Selecting(object sender, TabContr

我在空白表单上有一个选项卡控件,尽管当我更改选项卡时,有一种方法可以在单击其他选项卡时更改表单。请参见以下说明:


例如,如果我单击“tabPage2”,我将看到Form2.cs

是。只需将Form2设置为无边框,并将TopLevel更改为False,然后就可以将其添加到tabPage2.Controls集合中,就像普通表单一样。也可以添加DockStyle来填充该表单

简单演示:

private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e) {
  if (e.TabPage.Name == tabPage2.Name) {
    if (tabPage2.Controls.Count == 0) {
      Form f = new Form();
      f.TopLevel = false;
      f.FormBorderStyle = FormBorderStyle.None;
      f.BackColor = Color.Red;
      f.Dock = DockStyle.Fill;
      tabPage2.Controls.Add(f);
      f.Show();
    }
  }
}

有点奇怪的问题,在我看来,这不是最好的设计实践。至于我,我建议你创建用户控件,并将它们放在任何表单/选项卡/容器中。它会让你在任何地方都有同样的行为

顺便说一句,您可以在容器内放置任何表单,例如:

tabPage2.Controls.Add(new Form2());

您可能希望研究像开源一样的可固定表单控件。使用此控件,您可以让一个窗体宿主多个窗体、在选项卡中或像Visual Studio一样停靠。

您的示例将引发参数异常,因为默认情况下,新窗体的TopLevel=true。