• ベストアンサー

1フォーム上でメニューを切り替えたい

こんにちは。Windows Formについてお教えください。言語はVBです。 フォームには左メニュー、右メニューが配置されています。 左メニューのボタンをクリックすることにより、右メニューに表示される項目を変更しようと思います。 右メニューの大きさは常に固定にしようと思っています。 1つのフォーム上で、右メニューの中身を変更するには、どのようなコントロールを使えばいいのでしょうか? または、複数フォームを作って、それを右メニューで呼び出すというやり方になるんでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

私ならパネルコントロールを使います。 パネルコントロールを3つ配置しておいて、それぞれの中にラベルやテキストボックスなどのコントロールを配置します パネルコントロールの名前をそれぞれ、panel_a、panel_b、panel_cとした場合 ボタンAをクリックした際は panel_a.visible=true panel_b.visible=false panel_c.visible=false とすると、panel_aが表示されて、panel_b、panel_cは非表示になります。 同様にボタンBをクリックした際は panel_a.visible=false panel_b.visible=true panel_c.visible=true とすると、panel_bが表示されます。

fflashing
質問者

お礼

なるほど、わかりやすいです!ありがとうございます!

関連するQ&A

  • vb6で文字を入力可能なコンテキストメニューの作り方を押してください。

    作成環境:VB6(SP6) 右クリックメニューの中に、 文字の入力できるコンテキストメニューを表示させるにはどうしたらいいでしょうか? もしくはVB6で作成可能でしょうか? (MicrosoftのAccessのような、右クリックして「フィルタの対象」として入力できるようなもの) 今現在は、別フォームにTextBoxだけを配置して、 FormのサイズをTextBoxに合わせてFormを呼び出しています。 よろしくお願いします。

  • コンテキストメニューアイテムの右クリック左クリック

    よろしくお願いします。環境はVB2008です。 フォーム上にコンテキストメニューを配置し、右クリックで表示します。 そのあとにアイテムをクリックすると別のフォームが開くようにしてるのですが、右クリックでも左クリックでも同様にフォームが開いてしまいます。これを左クリックされたときのみ別のフォームを表示するようにするにはどのようにすれば宜しいでしょうか。ぜひご教授願います。

  • ToolStripStatusLabelを固定して配置したい。

    フォームの最下部にStatusStripコントロールを配置し、ToolStripStatusLabelを2つそれぞれ左詰め、右詰めに配置しました。 左のラベルの文字数が長いと、右に配置しているラベルがフォームの外に流れてしまい、フォーム上から消えてしまいます。右に配置しているラベルが流れないように固定したいのですがどのようにすればいいのでしょうか。 回答お待ちしております。

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

    開発言語: VB.net 開発環境: VisualStudio2005 .NET FrameWork: 2.0 現在、VB.netにてクライアント/サーバ形式のシステムの構築を行っているのですがメニュー画面の構築でお客様から以下の要望があがりました。 1. 画面左側にツリービューのメニューを表示し、右側に実画面を配置する。 2. ツリービューのメニューをクリックすると該当機能が起動すること(機能の切り替えがツリービューから行えること)。 3. メインのウインドウとしては1枚で行うこと。 WEBでのフレームを切った画面構成やVisualStudioの[ツール]-[オプション]画面のような構成をイメージされているようです。 クライアント/サーバシステムではご要望の形式は難しいとは思うのですが実現できるかどうかの評価を行っています。 現在、自分が考えている構想は以下の通りです。 ・MDIフォームを使用する ・MDI親フォーム左側にツリービューコントロールを配置する。 ・ツリービューから機能をクリックされた場合、子フォームとして表示する。 実際にテストしてみたのですが、ツリービューコントロールを配置し、クリックによって子フォームを開くところまでは成功しました。 しかし、表示したフォームがツリビューコントロールの下にもぐってしまいます。表示位置の指定もできましたが最大化されると同じことが 発生すると思います。こういう場合は親フォームにメニューバーを使用するしか手はないのでしょうか? 個人的には非常に複雑になるので要望の取り下げ依頼も必要かなと思っているのですがクライアント/サーバ形式でこういう機能を実現された方いらっしゃいましたらお教えください。 まったく別の方法で実現された方の意見等もお聞かせいただけるとありがたいです。 以上、宜しくお願い致します。

  • フォームを常に手前に表示する

    環境:WindowsXP VB6 form1からform2を表示させるのですが、form2を常にform1よりも手前に表示させたいと思っています。 表示は手前ですが、コントロールを常に固定したいわけではありません。 モーダルモードで表示するとform1が使用できなくなってしまいます。 解決方法としてどのようにしたらよいでしょうか?

  • MDIでフォームがアクティブにならない

    VB2008です。 MDIフォーム中にForm1とForm2があります。 Form1がアクティブです。 Form2をクリックしてもアクティブになりません。ただしタイトルバーをクリックするとアクティブになります。 これは言語の仕様でしょうか。市販のアプリケーションでは、タイトルバー以外の場所をクリックしてもアクティブになるものがほとんどですが、VB2008ではどのようにすれば実現できるのでしょうか。

  • フォームの生成と破棄

    C++Builder5.0の質問です。 フォーム(Form1)に複数のボタンを配置し、メニュー画面としました。 ボタンを押すと他の画面(Form2~5)に移れるようにしました。 ボタンには TForm2 *Form2 = new TForm2(this); Form2 -> Show(); Close(); ↑ Form2からForm5まであります。 と記述し、 Form2から5には「戻る」ボタンを設け、Form1(メニュー画面)に 戻れるようにしました。 Form2~5の「戻る」ボタンには TForm1 *Form1 = new TForm1(this); Form1 -> Show(); Close(); と記述しました。 また、全てのフォームのFormCloseイベントには自分のフォームを破棄するために delete Form2; 等と記述しました。 この状態でメニュー画面からForm2~5を開いたり閉じたりすることを 繰り返すと、不定期的に動作が固まってしまいます。 この原因はなんでしょうか。 Ver.はBCB5.0(Pro.)です。 御回答をよろしくお願いします。

  • VBでフォームにコントロールを動的に挿入するにはどうすればよいでしょう

    VBでフォームにコントロールを動的に挿入するにはどうすればよいでしょうか。 いつもお世話になります。 動的にコントロールを配置する方法は分かっています。 しかし、新規に配置したいコントロールのサイズ分、すでに配置されているコントロールの位置をずらして、コントロールを配置(要するに挿入)する方法がわかりません。 何かよい方法があれば教えて頂けませんでしょうか。 使用しているVBのバージョンは2010です。 宜しくお願いします。

  • VBのフォームをスクロールさせるには

    VB6.0+WinXP環境です。 VBのフォームがありそのフォームは大きさを自由に変えられるとします。フォームを小さくした時に、フォーム上のボタンなどが、表示から隠れてしまいますが、フォームに水平および垂直スクロールバーをつけて、スクロールさせて表示できるようにしたいと思います。 簡単なコントロールを配置するだけで可能ですか。それともスクロールコントロールを配置して、座標やフォームの大きさや移動具合などを考慮して、プログラムをつくり込まないと駄目でしょうか。

  • フォームを閉じる方法

    VB2005 Expressにて開発を行っております。 ログインフォーム、メニューフォーム、各フォームと複数フォームを使用 するアプリを作成中です。 そこで質問させて下さい。呼び出し元フォームを閉じてから呼び出し先 フォームを開くとするにはどのように行ったらいいのでしょうか。 下記が作成中のPGMですが、「Form1からForm2を表示」「Form2からForm1を表示」は正常に動作しますが、再度「Form1からForm2を表示」を行うと 破棄されたオブジェクトにアクセスできません。 オブジェクト名 'Form2' です。 が表示されて「f2.Show()」でエラーになってしまいます。 どなたかご存知の方がいらっしゃいましたらご教授下さい。 よろしくお願いします。 '標準モジュールで下記を宣言 Public f1 As New Form1 'ログイン画面 Public f2 As New Form2 'メニュー画面 Public f3 As New Form3 'メニュー1 Public f4 As New Form4 'メニュー2 'Form1からForm2を表示 F_Form2.StartPosition = FormStartPosition.CenterScreen F_Form2.Show() Me.Close() 'Form2を閉じてForm1を表示 F_Form1.StartPosition = FormStartPosition.CenterScreen F_Form1.Show() Me.Close()

専門家に質問してみよう