循环递归+返回值(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         }

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

转载于:https://www.cnblogs.com/wanshi1989/p/4161958.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值