- PR -

MDI親フォームへのMDI子フォームの追加

1
投稿者投稿内容
うりぼう
会議室デビュー日: 2004/08/25
投稿数: 12
投稿日時: 2004-09-28 18:49
-------------------------------------------------------
[OS]Windows2000 Professional SP4
[VS]VisualStudio.NET2003
[言語]VB.NET
-------------------------------------------------------

MDIフォームに関しての質問なのですが、
MDIフォームとして作成した親フォームに
MDIフォームとして作成した子フォーム(親?)を
追加することはできないのでしょうか?
(表現がおかしかったらすみません)

子フォームをIsMDIContainer=trueに設定して実行すると、
親フォーム側に記述している下記のMdiParentプロパティで
エラーになってしまいます。

Dim f As New frmChild
f.MdiParent = Me
f.Show()

どなたかご存知の方がいらっしゃいましたらご教授お願いします。
うりぼう
会議室デビュー日: 2004/08/25
投稿数: 12
投稿日時: 2004-09-29 17:19
暫定的な自己解決です。

MDIフォームにMDIフォームを追加は相変わらずできないのですが、
フォームを複数階層の入れ子にする方法はありました。

Dim f As New frmChild
f.TopLevel = False
Me.Controls.Add(f)
f.Show()

とすると、フォームをフォームに追加することは可能なようです。
これはMDIフォームに限らず、Meの部分を他のコントロール(Panelなど)に
かえても、そのコントロール上にフォームを追加することができました。

ただし、この方法は
・複数フォームの並べ替えが簡単にできない(LayoutMDIがつかえない)
・子フォームを選択してもアクティブなフォームの表示にならない。
(非アクティブの表示のままになっている)
・親フォームのAutoScrollの動きが不安定。(スクロールバーが出なかったり
消えなかったりという動作をするときがある)
といった機能として若干不十分なところがありますので
MDIフォームの入れ子ができるのであればそちらのほうがいいと思っています。

引き続き、MDIフォームの入れ子を可能にする方法を
ご存知の方はご教授ください。
よろしくお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)