设置与面板尺寸相关的表单尺寸

本文关键字:表单 设置 | 更新日期: 2023-09-27 18:05:44

我正在使用c#,我有一个WinForms应用程序。

我有一个包含一些按钮的主表单,假设按钮a和B。我有另一种形式,FormB,它有两个不同尺寸的面板。

我要做的是当用户点击按钮A是显示FormB与第一个面板的尺寸,并表示第一个面板。当用户单击按钮B时,将显示第二个面板尺寸的formB并展示第二个面板。

我知道如何在每种情况下显示这些面板,但表单大小没有像我预期的那样改变。

我试图使用Dock属性并将其设置为填充。但是什么也没发生。

    private void FormB_Load(object sender, EventArgs e)
    {
        panel1.Location = panel2.Location = new Point();
        timer1.Start();
        if (!first)
        {
            panel1.Visible = false;
            panel2.Visible = true;
        }
        else
        {
            panel1.Visible = true;
            panel2.Visible = false;
        }
        this.Dock = DockStyle.Fill;
    }

设置与面板尺寸相关的表单尺寸

您应该使用panel1.Dock = DockStyle.Fillpanel2.Dock = DockStyle.Fill,而不是this.Dock = DockStyle.Fill,因为您想设置Panel而不是Form的Dock属性。

private void FormB_Load(object sender, EventArgs e)
    {
        panel1.Location = panel2.Location = new Point();
        timer1.Start();
        if (!first)
        {
            panel1.Visible = false;
            panel2.Visible = true;
            panel2.Dock = DockStyle.Fill;
        }
        else
        {
            panel1.Visible = true;
            panel2.Visible = false;
            panel1.Dock = DockStyle.Fill;
        }
    }

EDIT但是前面的代码会根据表单的大小改变面板的大小。因为你想把表单的大小设置为面板的大小,那么你应该像这样设置FormSize属性:

    private void FormB_Load(object sender, EventArgs e)
    {
        panel1.Location = panel2.Location = new Point();
        timer1.Start();
        if (!first)
        {
            panel1.Visible = false;
            panel2.Visible = true;
            this.Size = new Size(panel2.Size.Width + 16, panel2.Size.Height + 38);
        }
        else
        {
            panel1.Visible = true;
            panel2.Visible = false;
            this.Size = new Size(panel1.Size.Width + 16, panel1.Size.Height + 38);
        }
    }