|
.NET TIPS TreeViewコントロールへ項目を追加するには?デジタルアドバンテージ 一色 政彦2005/02/04 |
![]() |
|
|
|
本稿では、.NET Frameworkの標準コントロールであるTreeViewコントロール(System.Windows.Forms名前空間)を活用するために、TreeViewコントロールにデータを追加する方法を紹介する。
TreeViewコントロールはデータ項目(ノード)をツリー形式で表示するためのもので、Windowsのエクスプローラでもおなじみのコントロールだ。例えば次の画面のように、ツリー状にデータ項目を並べて表示することができる。
![]() |
| TreeViewコントロールのツリー表示 |
それではさっそくTreeViewコントロールへのデータの追加方法を説明しよう。
TreeViewコントロールへデータをまとめて追加する方法
本稿のサンプル・プログラムでは、次のようなツリーを構築してみよう。

TreeViewコントロールの各ノードは、それぞれTreeNodeクラス(System.Windows.Forms名前空間)のオブジェクトとして実装する。上記のツリーには下位のノードとして「果物」と「野菜」という2項目があるが、まずこれらを次のようにして作成する。
TreeNode treeNodeFruits = new TreeNode("果物");
TreeNode treeNodeVegetables = new TreeNode("野菜");
「食べ物」のように子ノードを持つノードの場合には、子ノードとなるTreeNodeオブジェクトを配列にして、コンストラクタの第2パラメータで指定することができる。
TreeNode[] treeNodeSubFolder = { treeNodeFruits, treeNodeVegetables};
TreeNode treeNodeFood = new TreeNode("食べ物", treeNodeSubFolder);
同様にして、「飲み物」のノードを作成する。
TreeNode treeNodeDrink = new TreeNode("飲み物");
以上で、各項目に対するノードの作成は完了だ。次に最上位のノードである「食べ物」と「飲み物」をTreeViewコントロールに追加する。
TreeViewコントロールへ項目を追加するにはTreeViewコントロールのNodesプロパティに対してAddメソッドもしくはAddRangeメソッドを使えばよい。
AddRangeメソッドでは、次のように最上位のノードを配列にまとめて指定することにより、複数の項目を一度に追加できる。
TreeNode[] treeNodeRoot = { treeNodeFood, treeNodeDrink };
treeView1.Nodes.AddRange(treeNodeRoot);
以上をまとめた具体的なサンプル・コードは、次のとおりだ。
|
|
| TreeViewコントロールへデータをまとめて追加するサンプル・コード(C#) |
|
|
| TreeViewコントロールへデータをまとめて追加するサンプル・コード(VB.NET) |
上記のコードにあるTreeViewコントロールのClearメソッドは、既存のデータ項目をすべて消去するためのものだ。
また、TreeViewコントロールのTopNodeプロパティは、追加された最初のTreeNodeオブジェクトを示す(上記の場合には、「食べ物」のノード)。このノードに対してExpandメソッドを呼び出すことにより、「食べ物」のノードが開かれて、その下位階層にある「果物」と「野菜」のノードが表示される。
TreeViewコントロールへデータを1つずつ追加する方法
ここまでに説明したような、複数のデータをまとめて追加する方法は、TreeViewコントロールを構築する際の初期表示で役立つだろう。しかし初期表示以外では、状況に合わせてデータ項目を1つずつ登録していきたい場合もある。そのような場合には、前述のAddメソッドを利用すればよい。Addメソッドのパラメータには、TreeNodeオブジェクトを1つ指定する。
このAddメソッドは、実際にはノードのコレクションを示すTreeNodeCollectionクラス(System.Windows.Forms名前空間)のメソッドである。各ノードからは、Nodesプロパティにより、そのノードが持つ子ノードのコレクションをTreeNodeCollectionオブジェクトとして取得することができる。
以下のサンプル・コードは、あるノードが選択されたときに、そのノードに対して子ノードを1つ追加する。このコードはAfterSelectイベントのイベント・ハンドラとなっており、このイベントはTreeViewコントロールであるノードが選択された後に発生する。このとき、選択されたノードは、イベント・ハンドラにパラメータとして渡されたTreeViewEventArgsオブジェクトのNodeプロパティから取得できる。
|
|
| TreeViewコントロールのデータを1つだけ追加するサンプル・コード(C#) |
|
|
| TreeViewコントロールのデータを1つだけ追加するサンプル・コード(VB.NET) |
以上のサンプル・プログラムを実行したのが次の画面である。
![]() |
| TreeViewコントロールのサンプル・プログラムの実行結果 |
- サンプル・プログラムのソース・コード全体のダウンロード
(C#:treeviewadd.cs/VB.NET:treeviewadd.vb)
TreeViewコントロールでツリーを構築する場合、初期表示ですべてのノードを追加してしまうのが最も手軽な方法だろう。しかし例えばレジストリ・エディタやエクスプローラのように、ツリー階層が非常に深く、またその深さが不定で予想できない場合、ツリーのノードをすべて追加すると、それに時間がかかってしまい、アプリケーションのパフォーマンスが低下する可能性がある。「TIPS:TreeViewコントロールで効率的にツリーを構築するには?」では、それを回避する方法を紹介している。![]()
| カテゴリ:Windowsフォーム 処理対象:TreeViewコントロール 使用ライブラリ:TreeNodeクラス(System.Windows.Forms名前空間) 使用ライブラリ:TreeNodeCollectionクラス(System.Windows.Forms名前空間) 使用ライブラリ:TreeViewEventArgsクラス(System.Windows.Forms名前空間) 関連TIPS:TreeViewコントロールで効率的にツリーを構築するには? |
| 「.NET TIPS」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -




