我有一棵看起来像这样的树:
+Parent
-Child
+Parent
-Child
+Parent
-Child
+Parent
+Parent
+Parent
+Parent
-Child
-Child... etc.
我需要能够识别父母的所有节点,无论其级别如何。基本上我需要exampleTree.Nodes.GetAllParents()
方法。
答案 0 :(得分:3)
我使用了几种扩展方法:
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;
}
}
用法如下:
List<TreeNode> parents = treeView1.GetParentNodes();