注册 登录
编程论坛 C# 论坛

有关treeview获取节点的问题

Chonrye 发布于 2020-08-16 19:03, 2296 次点击
在一个treeview中有多个在不同位置的节点符合某要求(比如node.tag ==2),如何遍历这个树并把符合要求的节点添加到集合中,最后返回这个集合。谢谢大佬们
2 回复
#2
shenxq1232020-09-03 22:41
程序代码:

private void Form1_Load(object sender, EventArgs e)
        {

            for (int i = 0; i < 5; i++) {
                TreeNode tn = new TreeNode();
                tn.Text = $"节点{i}";
                tn.Tag = i;

                for (int j = 0; j < 5; j++) {
                    TreeNode tn1 = new TreeNode();
                    tn1.Text = $"子节点{j}";
                    tn1.Tag = j;
                    tn.Nodes.Add(tn1);

                    for (int k = 0; k < 5; k++) {
                        TreeNode tn2 = new TreeNode();
                        tn2.Text = $"子子节点{k}";
                        tn2.Tag = k;
                        tn1.Nodes.Add(tn2);
                    }

                }

                treeView1.Nodes.Add(tn);

            }


        }

        private List<TreeNode> find_node(TreeNode tn) {

            List<TreeNode> node_list = new List<TreeNode>();

            //首先判断本节点是不是符合条件的
            if (tn.Tag.ToString() == "2") {
                node_list.Add(tn);
            }

            //如果有子节点
            if (tn.Nodes.Count > 0)
            {
                foreach (TreeNode t in tn.Nodes) {
                    node_list.AddRange(find_node(t));
                }
            }

            return node_list;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //查询符合条件的节点集合
            List<TreeNode> node_list = new List<TreeNode>();
            foreach (TreeNode tn in treeView1.Nodes) {
                node_list.AddRange(find_node(tn));
            }

            int cc = 0;
        }
#3
abc2383612021-03-17 10:59
学习中
1