C#のツリービューでツリーノードとデータの関連付け

このQ&Aのポイント
  • C#でツリービューにツリーノードとデータを関連付ける方法
  • ツリーノードと独自データの関連付け方法を探しています
  • C#のツリービューでツリーノードに関連データを追加する方法
回答を見る
  • ベストアンサー

C#のツリービューでツリーノードとデータの関連付け

こんにちは。 C#でツリービューの操作をしています。 すでに階層構造を持つデータがあります。これをツリービューに表示させようとしています。 TreeNode treeNodeFruits = new TreeNode("果物"); としてツリービューに追加してあげると普通に表示できますが、このままだと独自データと関連付けがされていないため、ノードをクリックした際に何もできません。 C++ではHTREEITEMのlParamにユーザーデータのポインタをセットできますが、C#ではツリーノードに関連付けできそうな項目が見当たりません。 C#ではツリーノードと独自に持つデータとの関連付けをどのようにすればよろしいのでしょうか?

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

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

ツリービュー使ったことはありませんが……。 >C++ではHTREEITEMのlParamにユーザーデータのポインタをセットできますが、C#ではツリーノードに関連付けできそうな項目が見当たりません。 Tagプロパティとか…でしょうかねぇ……。 http://msdn.microsoft.com/ja-jp/library/system.windows.forms.treenode.tag%28v=vs.100%29.aspx

TeijigoTeatime
質問者

お礼

Tagプロパティでうまくいくようです。 ありがとうございました。

その他の回答 (1)

  • shockatz
  • ベストアンサー率80% (153/191)
回答No.2

TreeViewコントロールへの機能の付与は、TreeNodeオブジェクト(=Nodesコレクションの要素)に対してではなく、TreeViewインスタンス自身に対して行います。 TreeViewクラスのリファレンスを見てもらえばわかる通り、大量のイベントと、定義ずみイベントハンドラメソッドがありますので、こちらでうんちゃらして下さい。 ttp://msdn.microsoft.com/ja-jp/library/system.windows.forms.treeview(v=vs.110).aspx C#のイベントドリブン・プログラミングは泣くほど簡単ですよwww

TeijigoTeatime
質問者

お礼

早々のレスありがとうございます。 どうやらTagでよいみたいです。 C#はまだまだ不慣れで苦労しそうです。 頭を切り替えられるように頑張ります。

関連するQ&A

  • C# ツリービューの使い方

    現在、Microsoft Visual C# 2008 Express Editionでプログラムを作成しているのですが、ツリービューの使い方がよくわかりません。 具体的には、ツリービューとリストビューを左右に並べて、ツリービューのノードをクリックしたときに、その子ノードをリストビューに表示したいと考えています。 そこで、 ツリービューのNodeMouseClickイベントで foreach ( TreeNode child in this.treeView1.SelectedNode.ChildNodes ) { //リストにノードを表示する } と記述したのですが、 「'System.Windows.Forms.TreeNode' に 'ChildNodes' の定義が含まれておらず、型 'System.Windows.Forms.TreeNode' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」 というエラーが発生しました。 これを解決するにはどうすればいいのでしょうか?また、私が実装しようと考えている機能を、ツリービューとリストビューを併用した方法以外でより効率的にかけたりしますか? C#に詳しい人、回答よろしくお願いします。

  • ArrayListとツリー・リストビューの関連付けをするには

    前回質問したArrayListの要素を増やすには?の続きの質問です。 サンプルプログラムにもうひとつ配列の配列管理をするarcollectionMailを publicで作ろうとしたのですがエラーが出てしまいました。 // 問題のコード -> ";" が必要ですの構文エラーが出る ArrayList arCollectionMail = new ArrayList() { collectionMail[RECIVE],collectionMail[SEND],collectionMail[DELETE]}; これはどこが間違っている構文なのでしょうか? またツリービューにフォルダ(子ノード)を作成した時の新規配列と ツリービューの関連付けと新規ノードをクリックした時の反応の 追加方法も詳しく教えて頂けるとありがたいです。 開発環境はVS2005(C#)、.NET2.0です。 今回はソースコードをホームページに掲載しておきますので 回答の参考にしていただけるとありがたいです。 http://angelteatime.punyu.net/files/listsample.zip

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

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

  • ツリービューについて

    いつも参考にしています。 今回初めてVBで開発することになりました。 ツリービューの部分で詰ってしまいました。 【内容1】 2階層のツリーで下位階層(子)が選択されているときだけ実行したい処理があります。 現在選択しているノードが上位階層(親)か下位階層(子)か判断できるような関数などあるのでしょうか? 【内容2】 現在、画面上のツリービュー表示項目をダブルクリックすると値を更新できてしまうのですが、更新不可にできないでしょうか? どちらも初歩的なことなのかも知れませんが、検索しても分からなかったんです。 どうぞアドバイスお願いします。 VBは6.0です。

  • ツリービューで、画像管理したいのですが・・・・

    ツリービューで、画像や、テキストをを管理したいのですが、 ツリービューのノードに画像や、テキストを入れることが出来るのでしょうか? ツリービューのノードをクリックして選択した場合、 ピクチャーボックスやテキストボックスに、画像やテキストを表示したいのですが、 どうすればいいのか教えて下さい・・・お願いします。

  • C++Builder 6でツリービュー(初心者)

    C++Builder 6のツリービューで、任意の位置に ノードを挿入するにはどうすれば良いのでしょうか? indexを使って任意の位置の削除はできるのですが、・・・ どなたかお願いします。

  • C# TreeView 効率良いノード追加の仕方

    C# TreeViewについて質問させてください。 ノード(子ノード含む)を数万件以上登録する際に、効率の良い方法を教えて頂けないでしょうか? 実際のコードとは異なりますが、大まかに以下のような処理をメインスレッドで行っています。 class MyTreeNode : TreeNode{   void AddNode(){     BeginUpdate();     SuspendLayout();     foreach( var 親ノード情報 in 親ノード情報リスト ){       TreeNode parentNode = new TreeNode( 親ノード名 );       foreach( var 子ノード情報 in 子ノード情報リスト ){         TreeNode childNode = new TreeNode( 子ノード名);         parentNode.Nodes.Add( childNode );       }       this.Nodes.Add( parentNode );     }     ResumeLayout();     EndUpdate();   } } この方法ですと、かなり時間がかかってしまい、UIが固まったようになってしまいます。 (TreeViewに、子ノードの一斉展開機能が必要なので、親ノード展開時のイベントを拾って  子ノードを追加する方法は上記と同じく遅くなってしまうのではと思っていますがどうなんでしょうか?)

  • C#でtreeviewの指定ノードを選択する

    C#にて、 treeviewでの選択ノードを記憶しておき、 treeviewを一度更新(削除し作成)し、 記憶してあるノードを再び選択する。という動きをしたいです。 TreeNode tn = new TreeNode(); tn = treeView1.SelectedNode; //ここでDB再読み込み→treeView再作成 treeView1.Focus(); treeView1.SelectedNode = tn; としているのですが、TopNode選択状態になってしまい、 最初に選択していたNodeを選択してくれません。 どなたかご教授願います。 よろしくお願いいたします。

  • ツリービューの使い方が・・・

    VBのカスタムコントロールはほとんどさわったことがないので、ぜんぜんわからないです。 初心者っぽい質問で申し訳ないのですが、プロセスとプロセスがもっているスレッドを、プロセスID&スレッドIDをキーにツリー構造を持たせたいのですが、ツリービューのツリーへのアクセスのしかたがわかりません。 MSDNライブラリが壊れているようで、ヘルプが出ないのです。 新しいMSDNライブラリ入れてから、トラブル続き。 TreeView1.Nodes.Add , , "キー", "値" TreeView1.Nodes.Add , , "キー\サブキー", "値" じゃなさそうみたいです。 かといってそれぞれのノードが小枝への参照をもっているわけでもないし、小枝を追加するメソッドをもっているわけでもないし。 単純に小枝への追加のしかたが知りたいだけなんですけど・・・。 だれか教えてください。

  • ツリービューを使って、エクスプローラのようなものを作りたい。その二

    以前、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=372373 の『ツリービューを使って、エクスプローラのようなものを作りたい』という質問をした者です。 そこで教えていただいたプログラムを使って、一応は出来たのですが、このツリービュー内にフォルダだけでなく、ファイルも同時に表示させることは出来るんでしょうか。 実は、今まではDriveListBox、DirListBox、FileListBoxを組み合わせていたのですが、ツリービューに統合しようとしています。 前の質問で教えていただき、フォルダはしっかりと表示されるようになりましたが、ファイルは表示されません。 一階層だけなら、ファイルも表示できるプログラムは以前から作っていたので出来ると思っていたのですが、どうしても出来ません。 ファイルを選択してそれをRichTextBoxなどに表示させるというのが目的です。前述の三つの組み合わせや、教えていただいたプログラムにFileListBoxを付けてもいいんですが、それだと不恰好になってしまうので…… TreeViewにファイルを表示させる方法を教えてください。よろしくお願いします。

専門家に質問してみよう