• 締切済み

VC#のTreeViewコントロールについて

こんばんは。 VC#2005ExpressEditionで、TreeViewコントロールを使ったフォームを作ろうとしています。 フォームの左側にTreeViewコントロールをおいて、 ノードを選択するたびに、右側が切り替わるようなフォームを作りたいと考えています。 ちょうどeclipseの設定画面みたいな感じです。 ノードの数はすでに決定しています。 ただ、いろいろ調べたのですが、 ノードを追加したり削除したり、コードにアイコンを設定したり、 そういった情報はあるのですが、私がやってみたいことの情報は見つかりませんでした・・・。 ノードに対応するフォームをひとつづつ作って、ノードが選択されたときにそれを呼び出す、 のような感じだと思うのですが、具体的にどのように設定したらよいか分かりません・・・。 ご存知の方がいらっしゃったら教えていただけませんか? よろしくおねがいします。

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

AfterSelect/BeforeSelectイベントあたりで処理することになりそうですよ AfterSelectで選択されたノードを引数のe.Nodeから特定して 右ペインを切り替えればいいでしょう BeforeSelectで以前選択されていた物の後始末が必要ならこちらでしましょう AfterSelectイベントで Color cl = Color.Yellow; switch( e.Node.Name ) {   case "ノード0":     cl = Color.Black;     break;   default:     cl = Color.White;     break; } pictureBox1.CreateGraphics().Clear( cl ); といった具合で …

ijhnb6543f
質問者

お礼

ご回答ありがとうございます。 教えた頂いたコードで、ピクチャーボックスの色を変えることができました。ノードの名前で判断するのですね。 ただ、ペインにダイアログ(コントロール?)をどうやって貼り付けて、 どうやった呼び出せばよいのか、そこらへんはうまく出来なくて・・・もうちょっと調べてみます・・・。

関連するQ&A

  • TreeViewのノードを選択 右メニュー変更

    こんにちは。添付画像にあるような事をしたいと思っています。 左側のメニューはtreeviewコントロールで作られていると思います。ツリーの各ノードを選択すると、右側の領域が変更されるようにしたいと思っているのですが、どういった方法を使えば実現できるのかお教え頂けませんでしょうか? コントロールを色々調べてみたのですが、該当するものがありませんでした。よろしくお願いいたします!

  • TreeViewについて

    C++Builderを使用しています。 TreeViewで、ノードのテキストにより、アイコンを 変えたいのですが、方法を教えていただけないでしょうか。 たとえば、ノードの名前がABCだっったら、 Aを読み取り、アイコンを自動設定するような・・・。 よろしくお願いします。

  • TreeViewの再表示のちらつきをなくす方法

    お世話になっております。 VB2005でWinアプリ開発中です。 テキストボックスに条件を入力し、ボタンを押下すると、 TreeViewに該当データのノードを設定し、 ノードを展開した状態で表示する処理があります。 ノードが展開表示されている状態で、ボタンを押下し 新しい情報を再表示すると、 ノードが折りたたまれて展開されたというような動きが見えてしまいます。 SuspendLayout/ResumeLayoutを入れてみたのですが、変化無しでした。 ノードが展開された状態で、パッと再表示するには、 どのようにすればよいのでしょうか? よろしくお願いします!

  • TreeViewの内容を出力する方法

    VB6.0でコントロールTreeViewを使って、 親子関係を持つデータをツリー表示する フォームを作っています。 TreeViewに表示された内容をビットマップに出力 したいのですが、いい方法が見つかりません。 PrintFormメソッドでフォーム全体をPDF形式で出力 させることは出来たのですが、ツリー情報が多岐に 渡る場合、情報が欠けてしまいます。 出来ればフォーム全体ではなく、ツリーの内容を全て出力させたいです。 ビットマップが無理ならば他の方法でも構わないので ご存知の方がいましたら是非教えて下さい。

  • VB2005 ツリービューに子ノードを追加

    VB2005 ExpressEditionにて開発しています。 フォームロード時にデータセットからツリービューにデータをセット しようとしています。 ルートノードには  Dim Node As TreeNode  Node = TreeView2.SelectedNode  TreeView2.Nodes.Add("追加したい名前") で追加できます。 子ノードを追加する時はどうしたらいいのでしょうか。 ご存知の方がいらっしゃいましたら教えて下さい。 よろしくお願いします。

  • TreeViewの制御について

    ASP.NET2.0、VB.NETでWebアプリを開発しております。 現在、TreeViewコントロールを用いたマスタページに各コンテンツページを配置しています。 詰まっている箇所は二つです。 (1)マスターページ内のLoad処理で動的にノードを追加しているのですが、 各コンテンツページ呼び出し時に再生成されてしまい、メニューの展開が初期表示時に戻ってしまいます。 どうにか、展開情報を変更しない方法や、展開情報の保持、再現などできる方法はありませんでしょうか。 (2)コンテンツページのボタン押下で、メニューを選択できないようにし、 ボタン押下の処理終了時にメニューを復元することはできないでしょうか。 メニューの制御はできればEnabled(disabled)制御がいいのですが・・・ 恐れ入りますが、宜しくお願い致します。

  • VC++ で TextBoxから、次のコントロールに移動する方法について

    VC++で、フォーム上に複数のTextBoxを配置して、タブインデックスで、次に移動したいTextBoxを設定しました。 最初のTextBoxに入力した後、Tabキーで、次のコントロールに移動することはできましたが、Enterキーで次のコントロールへ移動することはできないのでしょうか? TextBoxのプロパティの設定方法とを教えて下さい。

  • VC++.netでaviを制御するには・・

    VC++.netでaviを制御するには・・ こんにちは、初めて質問します VC++.netで、aviをコントロールするプログラムを製作しています フォーム上に、スイッチを6個作り、スイッチをクリックすると、aviがフル画面で動き aviが終了すると、フル画面が消え、スイッチがあるフォームの絵に戻る というプログラムを作りたいのですが フォーム上にスイッチは、配置できました フォーム上にaxWindowsMediaPlayerを適当に6個配置し axWindowsMediaPlayerのプロパティでVisibleの設定をfalseして消し その他の設定のfullScreenの設定をfalseにして 各スイッチのイベントで、 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { axWindowsMediaPlayer1->fullScreen; axWindowsMediaPlayer1->Ctlcontrols->play(); axWindowsMediaPlayer1->settings->setMode("loop",false); } と書いたのですが 最初の一回目はフルスクリーンで動き、終了するともとの画面に戻るのですが 2回目以降は、フルスクリーンになりません Visibleを消しているので表示されないのかと思ったのですが Visibleの設定をtrueにすると、aviはイベントで動いているのは、わかったのですが フルスクリーンになりません イベントに  axWindowsMediaplayer1->fullScreen; と、書き足したのですが、フルスクリーンになりません しかたないので、イベントに、axWindowsMediaplayer1のサイズを画面1280×1024に設定して出した のですが、 今度は、aviの終了したというパラメータが返ってこないので終了できなくなってしまいました なにか良い方法がないか教えていただけないでしょうか? VC++.netの環境は、ExpressEditionで書いています よろしくお願いします

  • VC++.netでaviを制御するには・・

    VC++.netでaviを制御するには・・ こんにちは、初めて質問します VC++.netで、aviをコントロールするプログラムを製作しています フォーム上に、スイッチを6個作り、スイッチをクリックすると、aviがフル画面で動き aviが終了すると、フル画面が消え、スイッチがあるフォームの絵に戻る というプログラムを作りたいのですが フォーム上にスイッチは、配置できました フォーム上にaxWindowsMediaPlayerを適当に6個配置し axWindowsMediaPlayerのプロパティでVisibleの設定をfalseして消し その他の設定のfullScreenの設定をfalseにして 各スイッチのイベントで、 private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { axWindowsMediaPlayer1->fullScreen; axWindowsMediaPlayer1->Ctlcontrols->play(); axWindowsMediaPlayer1->settings->setMode("loop",false); } と書いたのですが 最初の一回目はフルスクリーンで動き、終了するともとの画面に戻るのですが 2回目以降は、フルスクリーンになりません Visibleを消しているので表示されないのかと思ったのですが Visibleの設定をtrueにすると、aviはイベントで動いているのは、わかったのですが フルスクリーンになりません イベントに  axWindowsMediaplayer1->fullScreen; と、書き足したのですが、フルスクリーンになりません しかたないので、イベントに、axWindowsMediaplayer1のサイズを画面1280×1024に設定して出した のですが、 今度は、aviの終了したというパラメータが返ってこないので終了できなくなってしまいました なにか良い方法がないか教えていただけないでしょうか? VC++.netの環境は、ExpressEditionで書いています よろしくお願いします

  • BeforeExpandのイベント作成方法

    いつもお世話になっています。 C#をはじめて3日目の初心者です。 C#でツリーコントロールをしようしてディレクトリツリーを作成しています。 ノードを展開しようとしているときに発生するイベントが「BeforeExpand」であることまで調べられたんですが、「TreeView」イベントから「BeforeExpand」を作成する方法がわかりません。。。 フォームをダブルクリックするとForm1_Loadのコードが自動で作成されますが、「TreeView」に対して何かをすればできると思っています。。。 ご存知の方よろしくお願いします。

専門家に質問してみよう