문제

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.

도움이 되었습니까?

해결책

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();
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top