0

私はC#を使用しており、WinFormsアプリケーションを使用しています。

ボタンAとBなど、いくつかのボタンを含むメインフォームがあります。別のフォームであるFormBには、寸法の異なる2つのパネルがあります。

私がやろうとしているのは、ユーザーがボタンAをクリックしたときに、FormBに最初のパネルの寸法を表示し、最初のパネルを表示することです。また、ユーザーがボタンBをクリックすると、formBに2番目のパネルの寸法が表示され、2番目のパネルが表示されます。

それぞれの場合にそれらのパネルを表示する方法を知っていますが、フォームのサイズは期待どおりに変更されません。

Dockプロパティを使用して、fillに設定しようとしましたが、何も起こりません。

    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

notのDockプロパティを設定するためではなく、panel1.Dock = DockStyle.Fillまたはを使用する必要があります。panel2.Dock = DockStyle.Fillthis.Dock = DockStyle.FillPanelForm

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 に答える