- - PR -
MDI子フォームの表示について
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2005-01-25 13:52
WindowsXPにてVisualBasic.Netの開発を行っています。 MDI子フォームの表示について教えてください。 やりたいことは以下の処理です。 MDIの親フォームはタイトルバーの表示がなく、上部と下部にヘッダとフッタのようなPictureを表示している。 中央のところに子フォームを1個表示する。 子フォームにもタイトルバーはなく、親フォームの中央部に全面表示となる。 子フォームは複数あるので、ボタン等により、子フォームを切替えて表示する。 現在、とりあえずは表示できるようになったのですが、以下の問題があり四苦八苦しています。 子フォームの切替え時に、下記Showをコールした際に旧の子フォームと、新の子フォームが重なったような表示となり、 かつ、一瞬タイトルバーが表示されている。 タイトルバーの件については、どうも子フォームのControlBoxをFalseとしているにもかかわらず、1度デフォルトの子フォームが表示され、 その後、Top,Left等を設定しているような感じです。 参考までに子フォームの表示プログラムを添付いたします。 pFrmChildはPublicのFormで現在表示中の子フォーム、pFrmMdiMainはMDI親フォームとしています。 ' Childフォームの表示 Public Sub ShowFrmChild(ByRef vFrm As System.Windows.Forms.Form) Dim rFrm As System.Windows.Forms.Form rFrm = pFrmChild '旧 pFrmChild = vFrm '新 With pFrmChild .Visible = False .Top = 0 .Left = 0 .MdiParent = pFrmMdiMain Call .Show() '新表示 .Visible = True End With If Not (rFrm Is Nothing) Then Call rFrm.Close() '旧Close rFrm = Nothing End If End Sub |
|
投稿日時: 2005-01-25 15:21
質問に対して技術的な回答にはなりませんが、代替案です。
投稿を拝見するに、 やりたいことは、あるメインフォームのピクチャーボックス(ヘッダーとフッダーの代わり?) 以外は、「フォーム内部の画面をボタンでパラパラ紙芝居的に切りかえる」と解釈できますが? 正しいでしょうか? MIDのメリットは、親フォーム内でリサイズ可能なフォームをマルチで表示したり、 動かせたりするのがメリットだと思います。 MID親フォームの中で、子フォームを「常時最大化」するのであればの話ですが、 MIDフォームを使う必要性は無いのでは??と思います。 代替案としては、MIDの子フォームの画面デザインと同じように、 ユーザーコントロールにデザイン&コード記述したものを複数作成(MIDの子フォーム数)。 それらをメインフォームに張り、 各ユーザーコントロールをボタンで表示・非表示の切り替えを行う方が良いのでは無いかと思います。 技術的な回答にはなっていませんが、 私は同じような動作仕様のアプリケーションを VB6の時代にはユーザーコントロールで作成していました。。 個人的にはかなり便利に使えて良い機能だと思っています。。 |
|
投稿日時: 2005-01-25 16:11
xxななおxxさん ご回答ありがとうございました。
目的はご指摘どおりの仕様です。 MDIを使用しないとなると 1) ヘッダフォーム 2) フッタフォーム 3) 子フォーム の3種類のフォームが常時表示される為、これよりはMDIを使用して 親フォームと子フォームの2種類を常時表示して管理したほうが、簡単かと 考えていたのですが。。。(いずれの場合でも子フォームは複数の中から1個) MDI以外の方法も含めて検討してみます。 |
1
