tkt989 🍵 ブログ

日々のメモ

WindowsフォームのMDIでモーダルなフォームを表示する方法

2018/04/11

まず結論から言うと通常のやり方では出来ません。 MDIでShowDialogを呼び出すと例外が発生します。

なので以下のやり方でやってみました。

var form = new Form2();
form.MdiParent = MdiParent;

Enabled = false;
form.FormClosed += (_s, _e) => Enabled = true;

form.Show();

フォームを開くときに現在のフォームを無効状態にしておきます。 そして開いたフォームが閉じるときに再び有効にする。

これで擬似的にモーダルにすることができました。