2011-12-27 48 views
9

我想在默認情況下顯示樹視圖上的第一級兒童的所有子女。 然後展開所有點擊的孩子。如何擴展Treeview的第一級兒童

+1

迭代的節點,要求他們展開()方法。 「點擊者」太模糊了。 – 2011-12-27 20:03:57

回答

11

嘗試:

foreach (TreeNode tn in treeView1.Nodes) { 
    tn.Expand(); 
} 

在運行過程中添加節點,你可以檢查水平和擴大,如果需要的話:

private void ShoudAutoExpand(TreeNode tn) { 
    if (tn.Level == 0) 
    tn.Expand(); 
} 

沒有NodeAdded事件中,你可以掛接到檢查自動。您必須確定是否應該「默認」擴展節點。

更新:

從您的評論,好像你想有擴大所有0級節點,但隨後展開1級的所有子節點,當你展開。

嘗試訂閱到BeforeExpand事件與此代碼:

private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e) { 
    treeView1.BeforeExpand -= treeView1_BeforeExpand; 
    if (e.Node.Level == 1) { 
    e.Node.ExpandAll(); 
    } 
    treeView1.BeforeExpand += treeView1_BeforeExpand; 
} 
+0

第一部分顯示了我想要的一級孩子。但是,當我點擊其中的任何人時,繼承人的孩子都沒有完全展開。 – zsharp 2011-12-27 21:16:09

+0

@zsharp更新後的代碼。這聽起來像你基本上希望所有節點自動擴展「除了」1級節點。聽起來對嗎? – LarsTech 2011-12-27 21:32:22

+0

多數民衆贊成在一個,我試圖與onmouseclick這是一團糟。謝謝 – zsharp 2011-12-27 21:43:20

1

,你可以嘗試這樣的事情..你將不得不改變的例子,以適應自己的代碼,因爲你忘了粘貼任何代碼,您有或企圖

private void addChildNode_Click(object sender, EventArgs e) 
{ 
    var childNode = textBox1.Text.Trim(); 
    if (!string.IsNullOrEmpty(childNode)) { 
    TreeNode parentNode = treeView2.SelectedNode ?? treeView2.Nodes[0]; 
    if (parentNode != null) { 
     parentNode.Nodes.Add(childNode); 
     treeView2.ExpandAll(); 
    } 
    } 
} 
1

如果你想要一個遞歸,試試這個:

void expAll(TreeNode node) 
{ 
    node.Expand(); 
    foreach(TreeNode i in node.Nodes) 
    { 
     expAll(i); 
    } 
} 
1
private TreeNode ExpandUptoLevel(TreeNode tn,int level) 
    { 
     if (level != 0) 
     { 
      level --; 
      tn.Nodes[0].Expand(); 
      return ExpandUptoLevel(tn.FirstNode, level); 
     }        
     return tn; 
    } 
0

要將樹中的所有節點展開到某個級別,上面的代碼不起作用。只需添加一個檢查來讀取並比較實際節點級別和您希望擴展到的級別。這是一段代碼片段。

private void ExpandUptoLevel(TreeNode tn, int level) 
    { 
     if (level >= tn.Level) 
     { 
      tn.Expand(); 
      foreach (TreeNode i in tn.Nodes) 
      { 
       ExpandUptoLevel(i,level); 
      } 
     } 
    } 
+0

對Ravindra Sinare的回覆 - 不要立即張貼在上面。 – 2015-07-13 13:58:01

0

只能開第一節點:

for (int i = 0; i< treeView1.Nodes.Count; i++) 
     { 
      treeView1.Nodes[i].Expand(); 
     } 
+0

雖然此代碼片段可能會解決問題,但[包括解釋](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於提高您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。也請儘量不要用解釋性註釋來擠佔代碼,這會降低代碼和解釋的可讀性! – kayess 2017-01-24 10:35:24