C# 多个dockPanel在Form窗体中怎么布局设置
问题描述:
问题: 在Form1窗体中添加了9个dockpanel,dockpanel的Dock属性已设置为Fill,但是当鼠标拖动改变From1窗体时,所有的dockpanel并没有完全跟随填充Form1。
请问:怎么让鼠标拖动改变From1窗体时,**所有的dockpanel的大小跟随改变并填充满整个Form1窗口,并且所有的dockpanel的大小都一样**?
答
首先在窗体上放一个tablelayoutpanel,设置行列各为3,并且它本身设置为dock=fill,填充满窗口。
然后将9个dockpanel分别装入其单元格中,并且dock都设置为fill
答
因为这个是要方便给用户鼠标拖动dockpanel自定义布局的(数量和位置会有变化),不大适合用tablelayoutpanel,现在的做法是先获取Form1窗体的尺寸,然后设置各个dockpanel的尺寸和位置,代码如下,但是没不知道问题在哪。
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
InitDockPanel();
}
public void InitDockPanel()
{
//获取Form1的尺寸
int width = this.Width;
int height = this.Height;
//设置各dockPanel的尺寸;
foreach (Control control in this.Controls)
{
control.Size = new Size(width/3, height/3);
}
//设置dockPanel控件的坐标
int x0 = 0;
int x1 = width / 3;
int x2 = width * 2 / 3;
int y0 = 0;
int y1 = height / 3;
int y2 = height * 2 / 3;
dockPanel1.Location = new Point(x0, y0);
dockPanel2.Location = new Point(x1, y0);
dockPanel3.Location = new Point(x2, y0);
dockPanel4.Location = new Point(x0, y1);
dockPanel5.Location = new Point(x1, y1);
dockPanel6.Location = new Point(x2, y1);
dockPanel7.Location = new Point(x0, y2);
dockPanel8.Location = new Point(x1, y2);
dockPanel9.Location = new Point(x2, y2);
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
InitDockPanel();
}
}
答
Form1_SizeChanged和事件挂钩了么?是否没有执行。代码思路是对的。