C# 多个dockPanel在Form窗体中怎么布局设置

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和事件挂钩了么?是否没有执行。代码思路是对的。