Get a list of all tree nodes (in all levels) in TreeView Controls

You can use two recursive extension methods. You can either call myTreeView.GetAllNodes() or myTreeNode.GetAllNodes():

public static List<TreeNode> GetAllNodes(this TreeView _self)
{
    List<TreeNode> result = new List<TreeNode>();
    foreach (TreeNode child in _self.Nodes)
    {
        result.AddRange(child.GetAllNodes());
    }
    return result;
}

public static List<TreeNode> GetAllNodes(this TreeNode _self)
{
    List<TreeNode> result = new List<TreeNode>();
    result.Add(_self);
    foreach (TreeNode child in _self.Nodes)
    {
        result.AddRange(child.GetAllNodes());
    }
    return result;
}

Leave a Comment