我想得到一个节点中选择的Childnodes计数,包括子目录

时间:2012-11-30 13:19:14

标签: c# treeview

我有递归程序来添加节点t treeview但我希望有自下而上的方法来做到这一点。

到目前为止我已经这样做了,但它无法正常工作

private void TreeviewCountCheckedNodes(TreeNodeCollection treeNodeCollection)
{
    TreeNode node = treeNodeCollection[0];
    int countchecked = 0;
    if (node != null)
    {
        foreach (TreeNode childnode in node.Nodes)
        {
            if (childnode.Nodes.Count == 0 && childnode.Checked)
            {
                countchecked++;
            }
            else if (childnode.Nodes.Count > 0)
            {
                TreeviewCountCheckedNodes(childnode.Nodes);
            }
        }
    }
}

2 个答案:

答案 0 :(得分:1)

private int TreeviewCountCheckedNodes(TreeNodeCollection treeNodeCollection)
        {
            int countchecked = 0;
            if (treeNodeCollection != null)
            {
                foreach (TreeNode node in treeNodeCollection)
                {
                    if (node.Nodes.Count == 0 && node.Checked)
                    {
                        countchecked++;
                    }
                    else if (node.Nodes.Count > 0)
                    {
                        countchecked += TreeviewCountCheckedNodes(node.Nodes);
                    }
                }
            }
            return countchecked;
        }

呼叫:

int coount = TreeviewCountCheckedNodes(treeView.Nodes);

答案 1 :(得分:0)

我在这里发布这段代码,认为它可以帮助某人。

代码检索树视图中所有校验节点的计数。

int checkedNodesCount = 0;

private int GetCheckedNodesCount(TreeNodeCollection treeNodeCollection)
    {

        TreeNode node = treeNodeCollection[0];


        if (node != null)
        {
            if (node.Nodes.Count > 0)
            {
                foreach (TreeNode childnode in node.Nodes)
                {
                    if (childnode.Nodes.Count == 0 && childnode.Checked)
                    {
                        checkedNodesCount++;
                    }
                    else if (childnode.Nodes.Count > 0)
                    {
                        checkedNodesCount += GetCheckedNodesCount(childnode.Nodes);
                    }
                }
            }
            else
            {
                if (node.Checked)
                {
                    checkedNodesCount++;
                }
            }
        }
        return checkedNodesCount;
    }