TreeViewコントロールは、データ項目をツリー状に表示するためのもので、多くのプロパティ、メソッドが用意されています。本サイトで主に使用するものだけを載せておきます。
TreeView コントロール
プロパティ
型 | プロパティ | 内容 |
TreeNodeCollection | Nodes | ツリー ビュー コントロールに割り当てられているツリー ノードのコレクションを取得します。 |
bool | CheckBoxes | ツリー ビュー コントロール内のツリー ノードの横にチェック ボックスを表示するかどうかを示す値を取得または設定します。既定値は、falseです。 |
bool | LabelEdit | ツリー ノードのラベル テキストを編集できるかどうかを示す値を取得または設定します。既定値は、falseです。 |
TreeNode | SelectedNode | ツリー ビュー コントロールで現在選択されているツリー ノードを取得または設定します。 |
bool | Sorted | ツリー ビュー内のツリー ノードを並べ替えるかどうかを示す値を取得または設定します。既定値は、falseです。 |
TreeNode | TopNodes | ツリー ビュー コントロール内で完全に表示されている最初のツリー ノードを取得または設定します。 |
メソッド
メソッド | 内容 |
GetNodeCount(Boolean) | ツリー ノードの数を取得します。ツリー ビュー コントロールに割り当てられているすべてのサブツリー内のツリー ノードを数に含めることもできます。 |
CollapseAll() | すべてのツリー ノードを折りたたみます。 |
ExpandAll() | すべてのツリー ノードを展開します。 |
Focus() | コントロールに入力フォーカスを設定します。 |
Sort() | TreeViwe コントロール内の項目を並べ替えます。 |
イベント
イベント | 内容 |
AfterSelect | ツリー ノードが選択された後に発生します。 |
NodeMouseClick | ユーザーがマウスで TreeNode をクリックした時点で発生します。 |
TreeNodeCollection クラス
メソッド
メソッド | 内容 |
Add(string) | 現在のツリー ノード コレクションの末尾に、ラベル テキストを指定して新しいツリー ノードを追加します。 |
Add(string, string) | 指定したキーとテキストを使用して新しいツリー ノードを作成し、コレクションに追加します。 |
Add(TreeNode) | 以前に作成したツリー ノードをツリー ノード コレクションの末尾に追加します。 |
AddRange(TreeNode[]) | 以前に作成したツリー ノードの配列をコレクションに追加します。 |
Clear() | コレクションからすべてのツリー ノードを削除します。 |
ContainsKey(string) | コレクションに、指定したキーを持つツリー ノードが格納されているかどうかを判断します。 |
Insert(Int32,TreeNode) | ツリー ノード コレクション内の指定した位置に既存のツリー ノードを挿入します。 |
Remove(TreeNode) | 指定したツリー ノードをツリー ノード コレクションから削除します。 |
RemoveAt(Int32) | ツリー ノード コレクションの指定したインデックスにあるツリー ノードを削除します。 |
プロパティ
型 | プロパティ | 内容 |
Int32 | Count | コレクション内の TreeNodeオブジェクトの合計数を取得します。 |
bool | IsReadOnly | コレクションが読み取り専用かどうかを示す値を取得します。既定値は、falseです。 |
TreeNode クラス
オーバーロード
TreeNode(string) | ラベル テキストを指定して、TreeNodeクラスの新しいインスタンスを初期化します。Nameは設定されません。 |
プロパティ
型 | プロパティ | 内容 |
string | Name | ツリー ノードの名前を取得または設定します。 |
TreeNode | FirstNode | ツリー ノード コレクション内の最初の子ツリー ノードを取得します。なければ、nullを返します。 |
TreeNode | LastNode | 最後の子ツリー ノードを取得します。なければ、nullを返します。 |
TreeNode | NextNode | 次のレベルにある兄弟ツリー ノードを取得します。なければ、nullを返します。 |
TreeNode | Parent | 現在のツリー ノードの親ツリー ノードを取得します。ルートノードであれば、nullを返します。 |
TreeNode | PrevNode | 前のレベルにある兄弟ツリー ノードを取得します。なければ、nullを返します。 |
サンプルコード
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TreeView2
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
TreeNode rootnode = new TreeNode("ルート");
// キー(Name)は設定されないので、自分で設定する必要がある
rootnode.Name = rootnode.Text;
TreeNode childnode1 = new TreeNode("子ノード1");
childnode1.Name = childnode1.Text;
TreeNode childnode2 = new TreeNode("子ノード2");
childnode2.Name = childnode2.Text;
TreeNode grandchildnode1 = new TreeNode("孫ノード1");
TreeNode grandchildnode2 = new TreeNode("孫ノード2");
TreeNode grandchildnode3 = new TreeNode("孫ノード3");
rootnode.Nodes.AddRange(new[] { childnode1, childnode2 });
//キー(Name)とテキスト(Text)を指定してツリーノードを作成し、コレクションに追加する
rootnode.Nodes.Add("子ノード3", "子ノード3");
childnode1.Nodes.AddRange(new[] { grandchildnode1, grandchildnode2 });
childnode2.Nodes.Add(grandchildnode3);
childnode2.Nodes.Add("孫ノード4");
treeView1.Nodes.Add(rootnode);
treeView1.ExpandAll();
// ラベルを編集可能にします。
treeView1.LabelEdit = true;
// ツリー ビュー内のツリー ノードを並べ替えます。
treeView1.Sorted = true;
}
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
if( treeView1.SelectedNode.Parent == null )
{
label1.Text = "ルートノードです。";
}
else
{
label1.Text = treeView1.SelectedNode.Text;
}
}
private void btnClear_Click(object sender, EventArgs e)
{
// 全てのノードを削除します。
treeView1.Nodes.Clear();
}
private void btnAdd_Click(object sender, EventArgs e)
{
TreeNode childnode = new TreeNode(textBox1.Text);
childnode.Name = childnode.Text;
// ルートノードです。
// 一番上のノードを参照する場合は、TopNodeではなく、Nodes[0]を参照します。
TreeNode ParentNode = treeView1.Nodes[0];
if (ParentNode != null)
{
// 空ではない。
if (ParentNode.Nodes.ContainsKey(textBox1.Text) == false)
{
//キーが存在していない。
ParentNode.Nodes.Insert(ParentNode.Nodes.Count, childnode);
treeView1.SelectedNode = childnode;
//追加したノードにフォーカスを当てます。
treeView1.Focus();
}
}
}
private void btnRemove_Click(object sender, EventArgs e)
{
TreeNode selectedNode = treeView1.SelectedNode;
if (treeView1.Nodes.IsReadOnly == false)
{
if (selectedNode != null)
{
treeView1.Nodes.Remove(selectedNode);
//フォーカスを当てます。
treeView1.Focus();
}
}
}
}
}