gpt4 book ai didi

c# 获取TreeView父节点列表

转载 作者:行者123 更新时间:2023-12-03 05:34:23 24 4
gpt4 key购买 nike

如果我有一个TreeView(myTreeview),如何获取所有父节点的列表?即有子节点的节点

最佳答案

myTreeview.Nodes 将为您提供 MS 定义的根节点列表,这基本上意味着树的根分支上的节点。

此代码将构建带有子节点的根节点列表:

    IList<TreeNode> nodesWithChildren = new List<TreeNode>();
foreach( TreeNode node in myTreeview.Nodes )
if( node.Nodes.Count > 0 ) nodesWithChildren.Add( node );

更新:如果您希望 TreeView 中的所有节点都有一个子节点,无论树的深度如何,那么请使用一点递归,例如

private static IList<TreeNode> BuildParentNodeList(TreeView treeView)
{
IList<TreeNode> nodesWithChildren = new List<TreeNode>();

foreach( TreeNode node in treeView.Nodes )
AddParentNodes(nodesWithChildren, node);

return nodesWithChildren;
}

private static void AddParentNodes(IList<TreeNode> nodesWithChildren, TreeNode parentNode)
{
if (parentNode.Nodes.Count > 0)
{
nodesWithChildren.Add( parentNode );
foreach( TreeNode node in parentNode.Nodes )
AddParentNodes( nodesWithChildren, node );
}
}

更新 2:只有 1 个 foreach 循环的递归方法:

private static IList<TreeNode> BuildParentNodeList(TreeView treeView)
{
IList<TreeNode> nodesWithChildren = new List<TreeNode>();
AddParentNodes( nodesWithChildren, treeView.Nodes );
return nodesWithChildren;
}

private static void AddParentNodes(IList<TreeNode> nodesWithChildren, TreeNodeCollection parentNodes )
{
foreach (TreeNode node in parentNodes)
{
if (node.Nodes.Count > 0)
{
nodesWithChildren.Add( node );
AddParentNodes(nodesWithChildren, node.Nodes);
}
}
}

关于c# 获取TreeView父节点列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/560628/

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