好きこそものの上手なれ

親フォーム内に子フォームの表示 | C#

MDIアプリケーション

Multiple Document Interface

「マルチ・ドキュメント・インタフェース」と言うそうです。
http://ja.wikipedia.org/wiki/Multiple_Document_Interface

作成中のアプリにて使うことがあったのでメモ。
参考にさせて頂いたサイト:http://dobon.net/vb/dotnet/form/mdiapplication.html


環境

Visual Studio 2013
.NET Framework 4.0
C#

手順

  1. 親となるフォームを作成します。(MainFormとします)
    1. 親フォーム(MainForm)の「IsMDIContainer」プロパティをTrueに設定。
  2. 子になるフォームを作成します。(ChildrenFormとします)
  3. イベントに処理追加


今回は親フォームのメニューから子フォームを呼び出すので、Menu.Clickイベントに追加。

// 子フォームのインスタンス
ChildrenForm cdnForm = new ChildrenForm();
// 親フォームの子として設定
cdnForm.MdiParent = this;
// 子フォームの表示
cdnForm.Show();


フォーム表示時に最大化する

子フォームのFormWindowStateプロパティを設定にて完了!・・・と思っていたら、上手く動かず。
子フォームは最大化されたように認識されて、最小化、最大化、閉じるボタンは親の下に揃っているが
肝心なレイアウトが最大化されていない・・・。
やむを得ず、子フォームを表示した後に最大化することにしました。

// 子フォームのインスタンス
ChildrenForm cdnForm = new ChildrenForm();
// 親フォームの子として設定
cdnForm.MdiParent = this;
// 子フォームの表示
cdnForm.Show();
// フォーム最大化
cdnForm.WindowState = FormWindowState.Maximized;


何か他にある気がするけど、、、今回は以上。