Accessing all the nodes in TreeView Control

前端 未结 7 1606
小蘑菇
小蘑菇 2020-11-27 22:27

I have a TreeView Control with set of nodes and child nodes. For example:

ROOT has A,B,C.

A has a1, a2, a3 and then

7条回答
  •  星月不相逢
    2020-11-27 23:02

    I am not the biggest fan of recursion but it seems you must use it. I saw a clever example online mixing recursion with an iterator.

        private int GetLevels(TreeNodeCollection treeNodes)
        {
            int level = 0;
            foreach (TreeNode node in TreeTopDown(treeNodes))
            {
                int i = node.Level;
                if (i > level) level = i;
            }
            return level;
        }
    
        //TopDown Iterator 
        private IEnumerable TreeTopDown(TreeNodeCollection treeNodes)
        {
            foreach (TreeNode node in treeNodes)
            {
                yield return node;
                foreach (TreeNode subNode in TreeTopDown(node.Nodes)) yield return subNode;               
            }
        }
    
        //BottomUp Iterator
        private IEnumerable TreeBottomUp(TreeNodeCollection treeNodes)
        {
            foreach (TreeNode node in treeNodes)
            {
                foreach (TreeNode subNode in TreeBottomUp(node.Nodes)) yield return subNode;
                yield return node;
            }
        }
    

提交回复
热议问题