zoukankan      html  css  js  c++  java
  • c# winform 通过递归在TreeView中查找某个结点

    在保存数据时,为了提高查找效率,将树形结构路径完整保存下来,例如tag值为x的一级节点,下面有一个tag值为y的二级节点,该节点下tag值为z的三级节点,路径就是x/y/z。

    查找该节点并设置为选中状态时,通过如下方法(递归)

    /// <summary>
    /// 在根据路由在树中查找某个节点
    /// </summary>
    /// <param name="router">路由信息,x/y/z</param>
    /// <param name="tv">要查找的数</param>
    /// <returns>返回被找到的节点</returns>
    public static TreeNode findTreeNode(string router, TreeView tv)
    {
        string[] nodeTags = router.Split('/');            
        return  findTreeNode(nodeTags, tv.Nodes,0);
    }
    
    /// <summary>
    /// 通过递归的方法找到节点
    /// </summary>
    /// <param name="destTag">要查找的节点的路由</param>
    /// <param name="tns">树形目录所有一级节点</param>
    /// <param name="j">层级,第一次为0</param>
    /// <returns>返回被找到的节点</returns>
    public static TreeNode findTreeNode(string[] destTag, TreeNodeCollection tns,int j)
    {
        TreeNode tn=null;
        for (int i = 0; i < tns.Count; i++ )
        {
            if (tns[i].Tag.ToString() == destTag[j])
            {
                if (tns[i].Nodes.Count > 0)
                {
                    j++;
                    tns[i].Expand();
                    tn = findTreeNode(destTag, tns[i].Nodes, j);
                }
                else
                {                        
                    tn = tns[i];
                }
            }
        }
        return tn;
    }
    
  • 相关阅读:

    模块
    序列化模块
    time模块、os模块、sys模块
    re模块、collections模块、random模块
    正则表达式
    递归函数和二分查找
    匿名函数
    推推导式和内置函数
    Java引用类型与值类型——Java面向对象基础(7)
  • 原文地址:https://www.cnblogs.com/yesok/p/12892777.html
Copyright © 2011-2022 走看看