- PR -

MDI子フォームの表示について

1
投稿者投稿内容
T3HKYM
会議室デビュー日: 2004/01/29
投稿数: 15
投稿日時: 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

xxななおxx
ベテラン
会議室デビュー日: 2005/01/18
投稿数: 61
お住まい・勤務地: 東京(練馬)
投稿日時: 2005-01-25 15:21
質問に対して技術的な回答にはなりませんが、代替案です。

投稿を拝見するに、
やりたいことは、あるメインフォームのピクチャーボックス(ヘッダーとフッダーの代わり?)
以外は、「フォーム内部の画面をボタンでパラパラ紙芝居的に切りかえる」と解釈できますが?
正しいでしょうか?

MIDのメリットは、親フォーム内でリサイズ可能なフォームをマルチで表示したり、
動かせたりするのがメリットだと思います。
MID親フォームの中で、子フォームを「常時最大化」するのであればの話ですが、
MIDフォームを使う必要性は無いのでは??と思います。

代替案としては、MIDの子フォームの画面デザインと同じように、
ユーザーコントロールにデザイン&コード記述したものを複数作成(MIDの子フォーム数)。
それらをメインフォームに張り、
各ユーザーコントロールをボタンで表示・非表示の切り替えを行う方が良いのでは無いかと思います。

技術的な回答にはなっていませんが、
私は同じような動作仕様のアプリケーションを
VB6の時代にはユーザーコントロールで作成していました。。
個人的にはかなり便利に使えて良い機能だと思っています。。



T3HKYM
会議室デビュー日: 2004/01/29
投稿数: 15
投稿日時: 2005-01-25 16:11
xxななおxxさん ご回答ありがとうございました。
目的はご指摘どおりの仕様です。
MDIを使用しないとなると
 1) ヘッダフォーム
 2) フッタフォーム
 3) 子フォーム
の3種類のフォームが常時表示される為、これよりはMDIを使用して
親フォームと子フォームの2種類を常時表示して管理したほうが、簡単かと
考えていたのですが。。。(いずれの場合でも子フォームは複数の中から1個)

MDI以外の方法も含めて検討してみます。

1

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