2014-05-21 33 views
2

我使用此代碼添加子節點到選擇的節點:如何顯示兒童節點的加號和減號?

private void PopulateSubNodes(DataTable Dt, TreeNode RootNode) 
{ 
    RootNode.Nodes.Clear(); 
    TreeNode Node; 
    foreach (DataRow Dr in Dt.Rows) 
    { 
     if (int.Parse(Dr[2].ToString()) > 0) 
     { 
      Node = RootNode.Nodes.Add(Dr[1] + " , " + Dr[2]); 
     } 
     else 
     { 
      Node = RootNode.Nodes.Add(Dr[1].ToString()); 
     } 
     Node.Tag = Dr[0]; 
    } 
    RootNode.Expand(); 
} 

我知道ID,標題和節點的孩子數。

在Dr [2]中,我檢查每個孩子的孩子數量,如果它大於0,我想爲此節點顯示加號和減號,否則我不想。

我該如何做到這一點?

回答

1

如果你邏輯上知道有孩子,但他們還沒有被添加到樹中,你將需要添加一個節點。

最簡單的方法是在檢測到此情況時使用佔位節點,並在節點展開時將其刪除。

internal class EmptyTreeNode : TreeNode { } 

private void PopulateSubModes(...) 
{ 
    // ... 

    if (hasChildren) node.Nodes.Add(new EmptyTreeNode()); 

    // ... 
} 

private static void TreeView1OnBeforeExpand(object sender, TreeViewCancelEventArgs args) 
{ 
    // If this isn't one of our special nodes... abort. 
    if (args.Node.Nodes.Count == 0 || !(args.Node.Nodes[0] is EmptyTreeNode)) 
     return; 

    args.Node.Nodes.Clear(); 

    // -- Do whatever to REALLY populate it 
    args.Node.Nodes.Add(new TreeNode("Weeeeeeeee")); 
    args.Node.Nodes.Add(new TreeNode("Hooooooah!")); 
} 
+0

謝謝,非常好。 –

-1

如果節點沒有子節點,+/-符號將不會顯示

確保葉子節點沒有一個空的子節點,如果它仍然顯示+/-符號。