• 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;
    }
    
  • 相关阅读:
    HDU--4548 美素数
    【思维】南阳理工 14 会场安排问题
    【思维】【水】 南阳oj 喷水装置(一)
    【思维】南阳理工91 阶乘之和
    【转】哈夫曼树 九度1172
    Array
    HDU--1702 ACboy needs your help again!
    栈和队列
    3.Compound data types
    4.Object Oriented Programming
  • 原文地址:https://www.cnblogs.com/yesok/p/12892777.html
Copyright © 2020-2023  润新知