使用Treeview控件时,通常需要遍历它的所有节点。Treeview控件本身没有这个功能。这里我们用递归的方法实现GetAllNodes()函数来获取根下的所有节点。返回值是节点列表,函数是
使用Treeview控件时,通常需要遍历它的所有节点。Treeview控件本身没有这个功能。这里我们用递归的方法实现GetAllNodes()函数来获取根下的所有节点。返回值是节点列表,函数是静态的。
我们可以将这两个函数添加到Treeview tree的类中,称为扩展类函数。
这里表示扩展类的主体。一个是Treeview,获取整个树中所有节点的列表,另一个是node,获取这个节点下所有节点的列表。
public static class TreeViewExtensions{ public static List<TreeNode> GetAllNodes(this TreeView tv) { List<TreeNode> result = new List<TreeNode>(); foreach (TreeNode child in tv.Nodes) { result.AddRange(child.GetAllNodes()); } return result; } public static List<TreeNode> GetAllNodes(this TreeNode node) { List<TreeNode> result = new List<TreeNode>(); result.Add(node); foreach (TreeNode child in node.Nodes) { result.AddRange(child.GetAllNodes()); } return result; }}
示例,直接调用
树形视图。GetAllNodes();
获取树中的所有节点。