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;
    }
    
  • 相关阅读:
    UGUI 学习
    跳一跳
    推箱子_1
    坦克大战
    建筑保温(复习) 灭火救援设施(一)
    建筑平面布置与防火防烟分区(一)
    第五篇消防安全评估
    第三篇第三章自动喷水灭火系统(一)
    案例35:室内消火栓系统检查与维护保养案例分析(二)
    YAML语法
  • 原文地址:https://www.cnblogs.com/yesok/p/12892777.html
Copyright © 2011-2022 走看看