こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

MDIフォームのメニュー構成

開発言語: VB.net
開発環境: VisualStudio2005
.NET FrameWork: 2.0

現在、VB.netにてクライアント/サーバ形式のシステムの構築を行っているのですがメニュー画面の構築でお客様から以下の要望があがりました。

1. 画面左側にツリービューのメニューを表示し、右側に実画面を配置する。
2. ツリービューのメニューをクリックすると該当機能が起動すること(機能の切り替えがツリービューから行えること)。
3. メインのウインドウとしては1枚で行うこと。

WEBでのフレームを切った画面構成やVisualStudioの[ツール]-[オプション]画面のような構成をイメージされているようです。

クライアント/サーバシステムではご要望の形式は難しいとは思うのですが実現できるかどうかの評価を行っています。
現在、自分が考えている構想は以下の通りです。

・MDIフォームを使用する
・MDI親フォーム左側にツリービューコントロールを配置する。
・ツリービューから機能をクリックされた場合、子フォームとして表示する。

実際にテストしてみたのですが、ツリービューコントロールを配置し、クリックによって子フォームを開くところまでは成功しました。
しかし、表示したフォームがツリビューコントロールの下にもぐってしまいます。表示位置の指定もできましたが最大化されると同じことが
発生すると思います。こういう場合は親フォームにメニューバーを使用するしか手はないのでしょうか?

個人的には非常に複雑になるので要望の取り下げ依頼も必要かなと思っているのですがクライアント/サーバ形式でこういう機能を実現された方いらっしゃいましたらお教えください。
まったく別の方法で実現された方の意見等もお聞かせいただけるとありがたいです。

以上、宜しくお願い致します。

投稿日時 - 2008-04-22 21:32:13

QNo.3968307

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

書き忘れ …

TreeViewの下へ潜ってしまう現象は起きますが
MDIフォームの Location(0,0)が パネルの右上の隣側になります

子フォームをMDIフォームでWithEventsで宣言してやれば Moveイベントなども拾えるのでLocationの制限も可能かと思われます

子フォームの WindowStateを Mximizedで使用するといった手もあります

投稿日時 - 2008-04-22 23:54:05

お礼

ご回答ありがとうございます。
こちらにまとめてお礼を記述させていただきます。

ご指摘のとおり、直接ツリービューコントロールを貼り付けていました。パネルをレフト側に配置しツリービューをFillで設定したところ希望通りの動作が行えました。ツリービューの下にもぐってしまう件はこれから検証させていただきます。

あとはフォームの切り替え時に前フォームを自動的に閉じる検証をとって可能であればお客様に提案したいと思います。

書き込みありがとうございました。
大変助かりました。

投稿日時 - 2008-04-23 13:15:27

ANo.1

MDIコンテナのフォームのクライアントエリアに直接 TreeViewを配置していませんか?
そのようにデザインしてしまうと配置したコントロールの領域もMDIコンテナフォームはクライアント領域と認識します

クライアント領域から除外するにはコンテナを配置してその部分を除外するようにしましょう

具体的には パネルコンロトールなどを配置してこのDockプロパティを LEFTなどにします
その上(パネル)にTreeViewを Dock.Fillで配置しましょう

こうすれば パネルを配置した部分以外がMDIフォームのクライアント領域になるのでご希望の形に近くなると思います

投稿日時 - 2008-04-22 23:25:10

あなたにオススメの質問