【C#】TreeViewコントロール

TreeViewコントロールは、データ項目をツリー状に表示するためのもので、多くのプロパティ、メソッドが用意されています。本サイトで主に使用するものだけを載せておきます。

TreeView コントロール

プロパティ

プロパティ内容
TreeNodeCollectionNodesツリー ビュー コントロールに割り当てられているツリー ノードのコレクションを取得します。
boolCheckBoxesツリー ビュー コントロール内のツリー ノードの横にチェック ボックスを表示するかどうかを示す値を取得または設定します。既定値は、falseです。
boolLabelEditツリー ノードのラベル テキストを編集できるかどうかを示す値を取得または設定します。既定値は、falseです。
TreeNodeSelectedNodeツリー ビュー コントロールで現在選択されているツリー ノードを取得または設定します。
boolSortedツリー ビュー内のツリー ノードを並べ替えるかどうかを示す値を取得または設定します。既定値は、falseです。
TreeNodeTopNodesツリー ビュー コントロール内で完全に表示されている最初のツリー ノードを取得または設定します。

メソッド

メソッド内容
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)ツリー ノード コレクションの指定したインデックスにあるツリー ノードを削除します。

プロパティ

プロパティ内容
Int32Countコレクション内の TreeNodeオブジェクトの合計数を取得します。
boolIsReadOnlyコレクションが読み取り専用かどうかを示す値を取得します。既定値は、falseです。

TreeNode クラス

オーバーロード

TreeNode(string)ラベル テキストを指定して、TreeNodeクラスの新しいインスタンスを初期化します。Nameは設定されません。

プロパティ

プロパティ内容
stringNameツリー ノードの名前を取得または設定します。
TreeNodeFirstNodeツリー ノード コレクション内の最初の子ツリー ノードを取得します。なければ、nullを返します。
TreeNodeLastNode最後の子ツリー ノードを取得します。なければ、nullを返します。
TreeNodeNextNode次のレベルにある兄弟ツリー ノードを取得します。なければ、nullを返します。
TreeNodeParent現在のツリー ノードの親ツリー ノードを取得します。ルートノードであれば、nullを返します。
TreeNodePrevNode前のレベルにある兄弟ツリー ノードを取得します。なければ、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();
                }
            }
        }
    }
}
タイトルとURLをコピーしました