C# 如何将一个表单加载到另一个表单';s小组

C# 如何将一个表单加载到另一个表单';s小组,c#,winforms,C#,Winforms,我有一个名为frmTest1的表单,其中有一个带有两个面板的splitcontainer。面板2应一次加载多个表单。对于第一个模板,它可以正常工作,但第二个模板无法将第三个模板加载到frmTest1的面板2中 以下是frmTest 1代码: namespace Project1 { public partial class frmMain3 : Form { public frmMain3() { InitializeComponent(); }

我有一个名为frmTest1的表单,其中有一个带有两个面板的splitcontainer。面板2应一次加载多个表单。对于第一个模板,它可以正常工作,但第二个模板无法将第三个模板加载到frmTest1的面板2中

以下是frmTest 1代码:

namespace Project1
{
public partial class frmMain3 : Form
{
    public frmMain3()
    {
        InitializeComponent();
    }

    private void btnShowTest1_Click(object sender, EventArgs e)
    {
        showScreen(new frmTest1());
    }

    public void showScreen(Control ctl)
    {
        while (splitContainer1.Panel2.Controls.Count > 0)
            splitContainer1.Panel2.Controls[0].Dispose();

        if (ctl is Form)
        {
            var frm = ctl as Form;
            frm.TopLevel = false;
            frm.FormBorderStyle = FormBorderStyle.None;
            frm.Visible = true;
        }
        ctl.Dock = DockStyle.Fill;
        splitContainer1.Panel2.Controls.Add(ctl);
    }
}
}
第二张表格的代码如下:

namespace Project1
{
public partial class frmTest1 : Form
{
    public frmTest1()
    {
        InitializeComponent();
    }

    private void btnShowTest4_Click(object sender, EventArgs e)
    {

        frmMain3 main = new frmMain3();
        main.showScreen(new frmTest4()); //Nothing shows
    }
}
}

从我所做的研究来看,解决方案似乎是使用usercontrol,但我以前从未使用过它,所以我很挣扎。有人能告诉我如何解决这个问题吗?

请尝试使用UserControl。只需将frmMain3的基类更改为“UserControl”,并从showScreen()中删除整个“if(ctl is Form)”部分。

这是否回答了您的问题?“但以前从未使用过”-不是不尝试的好借口。尝试也许你第一次尝试就会成功。如果不是——你有一个好的(比现在更好的)问题,并且有理由这样问。我已经花了两天时间在这个问题上,这就是为什么我问你需要使用for的一个实例。请参阅我的双表单项目:此处的注释可能很有趣:。