循环递归+返回值(TreeView示例)

示例:获取TreeView的所有Node,保存到List<TreeNode>,封装到通用工具类:

方法一:使用static方法、属性---调用前清空static类型的List

 1         public static List<TreeNode> allNodes = null;
 2         public static void GetTreeViewAllNodes(TreeNodeCollection Nodes)
 3         {
 4             foreach (TreeNode node in Nodes)
 5             {
 6                 allNodes.Add(node);
 7                 if (node.ChildNodes.Count > 0)
 8                 {
 9                     GetTreeViewAllNodes(node.ChildNodes);
10                 }
11             }
12         }
13         public static List<TreeNode> GetNodes(TreeView tv)
14         {
15             GetTreeViewAllNodes(tv.Nodes);
16             return allNodes;
17         } 
注意:如果使用static类型的List,每次调用该通用工具类之前需要清空List<TreeNode>,否则会出现叠加。在构造函数中清空:
public Tools()
{
      allNodes.Clear();   
}

方法二、使用内部方法、属性---直接调用

 1         public List<TreeNode> allNodes = new List<TreeNode>();
 2         public void GetTreeViewAllNodes(TreeNodeCollection Nodes)
 3         {
 4             foreach (TreeNode node in Nodes)
 5             {
 6                 allNodes.Add(node);
 7                 if (node.ChildNodes.Count > 0)
 8                 {
 9                     GetTreeViewAllNodes(node.ChildNodes);
10                 }
11             }
12         }
13         public List<TreeNode> GetNodes(TreeView tv)
14         {
15             GetTreeViewAllNodes(tv.Nodes);
16             return allNodes;
17         }

疑问:能不能使用一个方法既可以实现循环遍历,又可以获得返回值???

posted @ 2014-12-13 22:25  琅琊天  阅读(391)  评论(0编辑  收藏  举报