C# VisualStudio拆分容器和窗体

C# VisualStudio拆分容器和窗体,c#,winforms,splitcontainer,C#,Winforms,Splitcontainer,我想在我的应用程序的splitcontainer Panel2上添加12个小表单。这是一个由4x3=12个表格组成的网格。 因此,在我的应用程序的主要形式中,我添加了一个SplitContainer控件。我分别创建了12个表单。 要将12个表单添加到splitcontainer中,我执行以下操作: form1 _form1 = new form1(); _form1.TopLevel = false; this.splitContainer1.Pa

我想在我的应用程序的splitcontainer Panel2上添加12个小表单。这是一个由4x3=12个表格组成的网格。

因此,在我的应用程序的主要形式中,我添加了一个SplitContainer控件。我分别创建了12个表单。
要将12个表单添加到splitcontainer中,我执行以下操作:

        form1 _form1 = new form1();
        _form1.TopLevel = false;
        this.splitContainer1.Panel2.Controls.Add(_form1);
        _form1.Show();
        ....
        form12 _form12 = new form12();
        _form12.TopLevel = false;
        this.splitContainer1.Panel2.Controls.Add(_form12);
        _form12.Show();
这里的问题是所有表单(form1…form12)都显示在form1后面的相同位置(位置)。因此,我必须手动移动并替换每个表单

我想要的是一个包含所有12个表单的SplitCOntainer,每个表单位于不同的特定位置。

因此,当SplitContainer正在调整大小时,所有12个表单也在调整大小,当一个表单关闭时,它的步调保持为空,直到一个新表单拖到那里

编辑。我在这里编辑以显示如何解决此问题

        int _width = this.flowLayoutPanel1.Width;
        int _height = this.flowLayoutPanel1.Height;

        _width = (int)_width / 4;
        _height = (int)_height / 3;

        _form1.TopLevel = false;
        _form1.Width = _width;
        -form1.height = _height;
        _form1.Owner = this;
        _form1.TopLevel = false;
        flowLayoutPanel1.Controls.Add(_form1);
        _form1.Show();
....
_form12.TopLevel = false;
            _form12.Width = _width;
            -form12.height = _height;
            _form12.Owner = this;
            _form12.TopLevel = false;
            flowLayoutPanel1.Controls.Add(_form12);
            _form12.Show();
它能按我的要求工作。 感谢您将FlowLayoutPanel引入SplitContainer.panel

表单frm;
        Form frm;
        for (int i = 0; i < 12; i++)
        {
            frm = new Form(); //generate new instance
            frm.Width = 150;
            frm.Height = 150;
            frm.Owner = this;
            frm.TopLevel = false;
            flowLayoutPanel1.Controls.Add(frm);
            frm.Show();
        }
对于(int i=0;i<12;i++) { frm=new Form();//生成新实例 frm.宽度=150; frm.高度=150; frm.Owner=此; frm.TopLevel=假; flowLayoutPanel1.控件.添加(frm); frm.Show(); }
您可以使用FlowlayoutPanel。 simply Flowlayoutpanel加载项SplitContainer1.Panel2 并设置flowLayoutPanel1.dock=Fill

表单frm;
对于(int i=0;i<12;i++)
{
frm=new Form();//生成新实例
frm.宽度=150;
frm.高度=150;
frm.Owner=此;
frm.TopLevel=假;
flowLayoutPanel1.控件.添加(frm);
frm.Show();
}
您可以使用FlowlayoutPanel。 simply Flowlayoutpanel加载项SplitContainer1.Panel2
并设置flowLayoutPanel1.dock=Fill

可能在
Panel2
中放置一个?可能在
Panel2
中放置一个?Hello@Pranav1688。在你的循环中似乎是相同的形式。事实并非如此。所有12种形式都不同。您的循环将显示相同的表单12次您确定所有表单显示相同吗?当然可以。另一件事是:如何删除表单之间的空格。我将FlowLayoutPanel边距设置为0;0;0;0但它仍然显示相同的东西space@DeathCoder为flowLayoutPanel的ControlAdded事件添加一个EventHandler,并将其放入其中<代码>e.Control.Margin=新填充(0),而不是显示12个表单,它只显示9个具有正确空格的表单(因为大小合适,所以可以包含另一个表单)为空。我应该在FlowLayoutPanel上设置它?我已经选择了码头。假设FlowLayoutPanel可能占用所有空间。Hello@Pranav1688。在你的循环中似乎是相同的形式。事实并非如此。所有12种形式都不同。您的循环将显示相同的表单12次您确定所有表单显示相同吗?当然可以。另一件事是:如何删除表单之间的空格。我将FlowLayoutPanel边距设置为0;0;0;0但它仍然显示相同的东西space@DeathCoder为flowLayoutPanel的ControlAdded事件添加一个EventHandler,并将其放入其中<代码>e.Control.Margin=新填充(0),而不是显示12个表单,它只显示9个具有正确空格的表单(因为大小合适,所以可以包含另一个表单)为空。我应该在FlowLayoutPanel上设置它?我已经选择了码头。假设FlowLayoutPanel可能占用所有空间。