当前位置:  开发笔记 > 编程语言 > 正文

c#获取TreeView Parent节点列表

如何解决《c#获取TreeViewParent节点列表》经验,为你挑选了1个好方法。

如果我有一个TreeView(myTreeview),我怎样才能获得作为父节点的所有节点的列表?即有孩子的节点



1> ng5000..:

myTreeview.Nodes将为您提供MS定义的根节点列表,它基本上是指树的根分支上的节点.

此代码将构建一个包含子节点的根节点列表:

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

更新:如果您希望TreeView中的所有节点都有一个孩子而不管树有多深,那么使用一些递归,例如

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

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

    return nodesWithChildren;
}

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

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

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

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

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有