1

我想以正确的方式覆盖树视图节点中的计数,以便通过特定文本或名称获取节点的计数。有可能这样做吗?提前致谢。

例如:

这就是我的树视图的样子

在此处输入图像描述

在这种情况下,如果我使用 treeView1.Nodes[0].Nodes.Count,我将得到 3,这是根中的节点数。

我想要这样的东西,treeView1.Nodes[0].Nodes.CountByText("Folder") 它将返回我 2,根节点中存在节点的确切数量(Text = "Folder")。

4

2 回答 2

2

编写扩展方法

public static int CountByText(this TreeView view, string text)
{
   //logic to iterate through nodes and do count
   return count;
}

然后你可以这样做:

var count = treeview.CountByText("Folder");

您也可以传入 TreeNodeCollection 来执行此操作,具体取决于您的偏好。

编辑:

一些快速代码来说明:

    static class Class1
    {
        public static int CountByText(this TreeView view, string text)
        {
            int count = 0;

           //logic to iterate through nodes and do count
            foreach (TreeNode node in view.Nodes)
            {
                nodeList.Add(node);
                Get(node);
            }
            foreach (TreeNode node in nodeList)
            {
                if (node.Text == text)
                {
                    count++;
                }
            }
           nodeList.Clear();
           return count;
        }

        static List<TreeNode> nodeList = new List<TreeNode>();
        static void Get(TreeNode node)
        {
            foreach (TreeNode n in node.Nodes)
            {
                nodeList.Add(n);
                Get(n);
            }
        }
     }
于 2013-10-08T23:37:51.007 回答
1

这是我根据@Jaycee 提供的代码修改的版本,我希望它可以帮助其他人

public static class Extensions
{
    public static int CountByText(this TreeNode view, string text)
    {
        int count = 0;

        //logic to iterate through nodes and do count
        foreach (TreeNode node in view.Nodes)
        {
            if (node.Text == text)
            {
                count++;
            }
        }
        return count;
    }

}
于 2013-10-09T00:49:32.163 回答