【C#】パネル内に別のフォームを表示させる

パネル内に別のフォームを表示させる場合は
panel.Controls.Addメソッドを用いて表示させます。

構文

panel.Controls.Add(<インスタンス名かコントロール名>)

使用例

        private void Form1_Load(object sender, EventArgs e)
        {
            //フォームのインスタンスを作成
            Form2 form2 = new Form2();

            //フォームのトップレベルをFalseに設定
            form2.TopLevel = false;

            //フォーム2を開く
            form2.Show();

            //インスタンスをAddメソッドの引数に追加
            panel1.Controls.Add(form2);
        }

ソース解説

メソッドの直前で
(1)別フォームまたはコントロールインスタンスを生成
(2)別フォームのフォームのトップレベルプロパティをfalseに設定
(3)別フォームを開く(Showメソッドを使って表示させる。)
※(2)(3)はフォームの場合
(2)はtrueに値が設定されている場合、エラーが発生してしまう。
(3)はShowDialogメソッドを使用するとエラーが発生してしまう。
Showメソッドを使用しないとパネル内に表示されないため注意。

出力結果

f:id:rumr-Labo:20181123094525p:plain



今回はパネル内に別フォームを表示させる内容ですが、基本的にはフォーム内に直接別フォームを表示させることが可能です。
私自身は画面を作成し、このように別フォームをフォーム内に表示させるときにはパネル作り、上記のように使用しています。
このようにすることで仮に画面の設計を変更するときにもパネルの位置をずらすだけで良くなるため、作業効率が上がります。