gpt4 book ai didi

c# - 如何显示带有子节点的加号和减号?

转载 作者:太空宇宙 更新时间:2023-11-03 13:22:05 25 4
gpt4 key购买 nike

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

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] 中,我检查每个 child 的 child 数量,如果它大于 0,我想显示这个节点的正负值,否则我不想。

我怎样才能做到这一点?

最佳答案

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

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

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

关于c# - 如何显示带有子节点的加号和减号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23785535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com