C#/VB.NET でMDIフォームを使って複数のウィンドウを同時に表示する方法を説明します。

複数のウィンドウを同時に表示するにはどうすればいいですか?



MDIフォームを利用することで、親フォームに対して複数の子ウィンドウを作成することができます。
目次
MDIフォームで複数ウィンドウを表示させる方法
MDI(Multiple Document Interface)フォームを利用するには、普段利用しているフォームのプロパティの中のIsMdiContainerプロパティをtrue
にします。
新規のウィンドウを作成するには、MenuStripコントロールからの実行がおすすめです。MenuStripコントロールを配置し、新規ボタンを作成します。新規を押したときに、子フォームを作成します。


フォームに複数のメモ帳を表示させるサンプルプログラム
以下は、新規ボタンクリック時にフォームにリッチテキストを設置して複数のメモ帳を開けるようなサンプルになります。


private void 新規ToolStripMenuItem_Click(object sender, EventArgs e)
{
Form form = new Form();
RichTextBox richTextBox = new RichTextBox();
richTextBox.Dock = DockStyle.Fill;
form.MdiParent = this;
form.Text = "メモ帳" + MdiChildren.Length;
form.Size = new Size(300, 300);
form.Controls.Add(richTextBox);
form.Show();
}
Private Sub 新規ToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles 新規ToolStripMenuItem.Click
Dim form As New Form()
Dim richTextBox As New RichTextBox()
richTextBox.Dock = DockStyle.Fill
form.MdiParent = Me
form.Text = "メモ帳" & MdiChildren.Length
form.Size = New Size(300, 300)
form.Controls.Add(richTextBox)
form.Show()
End Sub
上記のサンプルでは、以下のような処理をしています。
- 一番最初に、新しいフォームを作成し、変数formに代入しています。
- 次に、新しいRichTextBoxを作成し、変数richTextBoxに代入しています。
- RichTextBoxのドッキングスタイルをDockStyle.Fillに設定し、RichTextBoxがフォームの全領域を埋め尽くすようにしています。
- 新しいフォームを親として設定して、これがMDIフォームとなります。
- 新しいフォームのタイトルを”メモ帳”にし、MdiChildren.Lengthを追加し、子フォームの数を表示します。
- 新しいフォームのサイズを300×300に設定しています。
- 新しいフォームにRichTextBoxを追加します。
- 最後に、新しいフォームを表示します。
まとめ
MDIフォームを使用して、複数のフォームを表示する方法について解説しました。
- MDIフォームを使って複数のウィンドウを同時に表示することができます。
- MDIフォームは、子フォームを複数表示するためのフォームです。
- フォームクラスには、IsMdiContainerプロパティがあり、これをtrueに設定することでMDIフォームを作成できます。
- 子フォームを作成し、MdiParentプロパティにMDIフォームを設定し、Showメソッドを呼び出すことで子フォームを表示することができます。



複数のフォームを同じウィンドウに作成することができました。



MDIフォームを使う場合、子フォームのレイアウトを調整することで、より見やすく、使いやすいアプリケーションを作ることができます。