2014-03-07 90 views
2

我有一棵樹,看起來是這樣的:識別所有的父節點的TreeView

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

我需要能夠識別所有的父母節點,無論水平。基本上我需要一個exampleTree.Nodes.GetAllParents()方法。

+1

你嘗試過什麼?什麼沒有用?你的意思是什麼?你的意思是遍歷並看看每一個?你是問有沒有辦法讓「所有父母都可以」?我們需要更多信息來幫助你。 – Tim

+0

是的,基本上我問是否有辦法像'exampleTree.Nodes.GetParents();'我沒有真正'試過'的東西,我正在研究一種方式,但到目前爲止我已經沒有偶然發現任何真正有用的東西。 – Schadenfreude

+0

我會更新你的帖子以反映這一點,因爲它有點不清楚,有些人可能會倒下它。 – Tim

回答

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(); 
+0

這看起來可能有用,我會試試看,並回復你:) – Schadenfreude

+0

這工作出色,謝謝! – Schadenfreude

+0

@LarsTech感覺自由。這些不是實際的方法,但我從他們那裏拼湊出來的(我不需要父母,只是「全部」)。 – DonBoitnott

相關問題