C# VisualStudio拆分容器和窗体
我想在我的应用程序的splitcontainer Panel2上添加12个小表单。这是一个由4x3=12个表格组成的网格。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控件。我分别创建了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可能占用所有空间。