プロが教えるわが家の防犯対策術!

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

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

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

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

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

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

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

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

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

A 回答 (2件)

書き忘れ …



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

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

子フォームの WindowStateを Mximizedで使用するといった手もあります
    • good
    • 0
この回答へのお礼

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

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

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

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

お礼日時:2008/04/23 13:15

MDIコンテナのフォームのクライアントエリアに直接 TreeViewを配置していませんか?


そのようにデザインしてしまうと配置したコントロールの領域もMDIコンテナフォームはクライアント領域と認識します

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

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

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

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!