识别TreeView中的所有父节点

时间:2014-03-07 14:01:50

标签: c# treeview parent-child parent

我有一棵看起来像这样的树:

+Parent
       -Child
+Parent
       -Child
       +Parent
              -Child
+Parent
+Parent
       +Parent
              +Parent
                     -Child
                     -Child... etc.

我需要能够识别父母的所有节点,无论其级别如何。基本上我需要exampleTree.Nodes.GetAllParents()方法。

1 个答案:

答案 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();