阅读 85

Visual Studio 2010下ASPX页面的TreeView控件循环遍历

如果维护一个老系统就总会遇到各种问题,而这次是TreeView的循环遍历。对于Visual Studio2010上aspx页面的TreeView控件,我感受到了什么叫集微软之大智慧。与二叉树型不一样。我解释一下,他提供TreeNode和集合TreeNodeCollection,彼此上下级通过TreeNodeChildNodes来实现连接的。这不就是B树结构吗?

思考和动手

这个模型设计上很简单(如图所示),但是在遍历的时候却多了列表List的索引,而没有Next()的迭代器,就导致用ForForeach迭代时,无法处理父Nodes子Nodes的索引切换。

编写代码:

/// 
/// 演示主函数
/// 
/// 
public void main()
{
    var nodes = treeView.Nodes;
    // 遍历列表
    for (var i = 0; i < nodes.Count; i++)
    {
        NodesRecursion(nodes, i);
    }
}

/// 
/// 递归遍历TreeNodes
/// 
/// 列表
/// 索引
/// 
private TreeNodeCollection NodesRecursion(TreeNodeCollection x, int idx)
{
    if (x == null)
        return null;

    var y = x[idx].ChildNodes;
    // 检测是否全部遍历,显示全部勾选
    x[idx].Checked = true;

    if (y.Count == 0)
    {
        return null;
    }
    else
    {
        // 递归
        for (var i = 0; i < y.Count; i++)
        {
            NodesRecursion(y, i);
        }
    }
    return x;
}

原文:https://www.cnblogs.com/DisonTangor/p/14928065.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐