質問

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