DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

フォーム内にフォームを表示する

下図のように(ちょっと分かりにくいですが)、MDIではなく、フォーム内にフォームを表示させるという、ちょっと変わったTipsです。いったい何の役に立つのかは分かりませんが、面白い使い方があるかもしれません。

フォームクラス(System.Windows.Forms.Form)はコントロールクラス(System.Windows.Forms.Control)からの派生クラスなので、フォームにフォームをコントロールとして追加することができるはずです。しかしそのままではエラーが発生し、不可能です。これは、追加するフォームがトップレベルウィンドウとされているためです。よって、フォームのTopLevelプロパティをFalseにしてからフォームのコントロールとして追加する必要があります。

次のコードはフォームクラス(Form1等)内に書かれているものとし、そのフォームの中にForm2を表示しています。

VB.NET
コードを隠すコードを選択
'表示させるフォームのインスタンスを作成
Dim f As New Form2()
'TopLevelをFalseにする
f.TopLevel = False
'フォームのコントロールに追加する
Me.Controls.Add(f)
'フォームを表示する
f.Show()
'最前面へ移動
f.BringToFront()
C#
コードを隠すコードを選択
//表示させるフォームのインスタンスを作成
Form2 f = new Form2();
//TopLevelをFalseにする
f.TopLevel = false;
//フォームのコントロールに追加する
this.Controls.Add(f);
//フォームを表示する
f.Show();
//最前面へ移動
f.BringToFront();

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • .NET Tipsをご利用いただく際は、注意事項をお守りください。