たまに、別の場所で作成したフォームを別のフォーム内に配置したい場合があります。
そのままフォームをControls.Addしようとしても、例外が発生します。
これは、フォームがTopLevelコントロールであるため、コントロールとして追加出来ない為です。
フォームを別のフォーム内もしくは特定のコントロール内に配置するには
以下のプロパティを調整します。
- TopLevelプロパティ
- FormBorderStyleプロパティ
TopLevelプロパティをfalseにすることで、そのフォームはTopLevelコントロール
じゃなくなります。その上で、FormBorderStyleをNoneにすると外枠が消えます。
この状態で貼り付けるといい感じになります。
以下、その部分のサンプルです。
あらかじめ、Form1とForm2が存在しているとします。
[Form1のロード部分]
Form2 form2 = new Form2(); // TopLevelコントロールでないようにする。 form2.TopLevel = false; // 外枠を消す. form2.FormBorderStyle = FormBorderStyle.None; // 配置されているコントロールを表示する. form2.Visible = true; pnlMain.Controls.Add(form2);