.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」 |
- 第2回 簡潔なコーディングのために (2017/7/26)
ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている - 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう - 第1回 明瞭なコーディングのために (2017/7/19)
C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える - Presentation Translator (2017/7/18)
Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
|
|