如何显示带孩子的节点的加号和减号?

时间:2014-05-21 14:02:52

标签: c# winforms treeview

我使用此代码将子节点添加到选定节点:

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,Title和子计数。

在Dr [2]中,我检查每个孩子的子计数,如果它大于0,我想显示该节点的加号和减号,否则我不想。

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:2)

如果你在逻辑上知道有孩子,但他们还没有被添加到树中,你需要添加一个节点。

最简单的方法是在检测到时使用占位符节点,并在展开节点时将其删除。

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!" ) );
}

答案 1 :(得分:-1)

如果节点没有子节点,则+/-符号不会显示

如果叶节点仍然显示+/-符号,请确保它没有空子节点。