HeyCHのブログ

慢性疲労のへいちゃんです

【C#】TreeViewって何よ

今回は、5ちゃんねるビューアーで使用したTreeViewについて書いていきたいと思います。
TreeViewは以下のようにTreeNodeをツリー状に表示することができるコントロールです。
f:id:HeyCH:20200420001158p:plain
「treeView1.CheckBoxes = true;」にすることにより、Node全てにチェックボックスをつけることができます。
f:id:HeyCH:20200420001418p:plain
TreeViewの「AfterCheck」でチェックボックスが変更された時、「AfterSelect」でノードが選択された時のイベントを取得できます。
f:id:HeyCH:20200420002152p:plain

        private void Form1_Load(object sender, EventArgs e) {
            treeView1.CheckBoxes = true;
            TreeNode node0 = new TreeNode("ルート");
            TreeNode node1 = new TreeNode("子ノード1");
            TreeNode node2 = new TreeNode("子ノード2");
            TreeNode node3 = new TreeNode("孫ノード1");
            TreeNode node4 = new TreeNode("孫ノード2");
            TreeNode node5 = new TreeNode("孫ノード3");
            node0.Nodes.AddRange(new[] { node1, node2 });
            node1.Nodes.AddRange(new[] { node3, node4 });
            node2.Nodes.Add(node5);
            treeView1.Nodes.Add(node0);
            treeView1.ExpandAll();
        }

        private void treeView1_AfterCheck(object sender, TreeViewEventArgs e) {
            Console.WriteLine(e.Node.Text + "のチェックが変更されました。");
        }

        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) {
            Console.WriteLine(e.Node.Text + "が選択されました。");
        }

任意のノードの頭にイメージを表示する

ImageListの追加

f:id:HeyCH:20200420002752p:plain
ImageListの登録

  • ImageListへの画像の追加

f:id:HeyCH:20200420003029p:plain
f:id:HeyCH:20200420004110p:plain

  • TreeViewへImageListを登録する

f:id:HeyCH:20200420003250p:plain

  • コードを記述する

以下のように任意のノードにImageIndexとSelectedImageIndexを指定してやることでアイコンを表示する事ができる。
ちなみにImageIndexとは選択されていない状態のアイコンのIndexで、SelectedImageIndexは選択されている状態でのそれである。

        private void Form1_Load(object sender, EventArgs e) {
            TreeNode node0 = new TreeNode("ルート", 1, 1);
            TreeNode node1 = new TreeNode("子ノード1", 1, 1);
            TreeNode node2 = new TreeNode("子ノード2", 1, 1);
            TreeNode node3 = new TreeNode("孫ノード1");
            TreeNode node4 = new TreeNode("孫ノード2");
            TreeNode node5 = new TreeNode("孫ノード3");
            node0.Nodes.AddRange(new[] { node1, node2 });
            node1.Nodes.AddRange(new[] { node3, node4 });
            node2.Nodes.Add(node5);
            treeView1.Nodes.Add(node0);
            treeView1.ExpandAll();
        }

f:id:HeyCH:20200420005020p:plain