Tendot
Tendot
采纳率80%
2018-09-07 02:45 阅读 2.9k

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

20

图片说明

问题: 在Form1窗体中添加了9个dockpanel,dockpanel的Dock属性已设置为Fill,但是当鼠标拖动改变From1窗体时,所有的dockpanel并没有完全跟随填充Form1。
请问:怎么让鼠标拖动改变From1窗体时,**所有的dockpanel的大小跟随改变并填充满整个Form1窗口,并且所有的dockpanel的大小都一样**?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • 已采纳
    caozhy 从今以后生命中的每一秒都属于我爱的人 2018-09-07 02:54

    首先在窗体上放一个tablelayoutpanel,设置行列各为3,并且它本身设置为dock=fill,填充满窗口。
    然后将9个dockpanel分别装入其单元格中,并且dock都设置为fill

    点赞 1 评论 复制链接分享
  • Tendot Tendot 2018-09-07 03:34

    因为这个是要方便给用户鼠标拖动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();
        }
    }
    
    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 2018-09-07 03:57

    Form1_SizeChanged和事件挂钩了么?是否没有执行。代码思路是对的。

    点赞 评论 复制链接分享

相关推荐