Reputation: 1910
I have a tree that looks something like this:
+Parent
-Child
+Parent
-Child
+Parent
-Child
+Parent
+Parent
+Parent
+Parent
-Child
-Child... etc.
I need to be able to identify all the nodes that are parents, regardless of the level. Basically I need an exampleTree.Nodes.GetAllParents()
method.
Upvotes: 2
Views: 3034
Reputation: 11025
A couple of extension methods that I use:
public static class TreeViewEx {
public static List<TreeNode> GetParentNodes(this TreeView treeView) {
List<TreeNode> results = new List<TreeNode>();
foreach (TreeNode node in treeView.Nodes) {
results.AddRange(GetNodes(node));
}
return results;
}
private static List<TreeNode> GetNodes(TreeNode parentNode) {
List<TreeNode> results = new List<TreeNode>();
if (parentNode.Nodes.Count > 0) {
results.Add(parentNode);
foreach (TreeNode node in parentNode.Nodes) {
results.AddRange(GetNodes(node));
}
}
return results;
}
}
Usage would be as such:
List<TreeNode> parents = treeView1.GetParentNodes();
Upvotes: 3