0

我正在使用 C#,并且我有一个 WinForms 应用程序。

我有一个包含一些按钮的主表单,比如说按钮 A 和 B。我有另一个表单,FormB,它有 2 个不同尺寸的面板。

我想要做的是当用户单击按钮 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;
    }
4

1 回答 1

1

您应该使用panel1.Dock = DockStyle.Fillor panel2.Dock = DockStyle.Fill,而不是this.Dock = DockStyle.Fill因为您要设置 Dock 属性而Panel不是Form.

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;
        }
    }

编辑但是之前的代码会根据表单的大小改变面板的大小。由于您想将表单的大小设置为面板的大小,因此您应该设置如下Size属性Form

    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);
        }
    }
于 2013-03-23T21:00:41.450 回答