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);
//}

for (var node in nodes) {
NodesRecursion(nodes.ChildNodes);
}
}

///


/// 递归遍历TreeNodes
///

/// 列表
/// 索引
///
private void NodesRecursion(TreeNodeCollection x)
{
//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;

for (var tn in x)
{
NodesRecursion(tn.ChildNodes);
}
}

Change in Dec.3rd.2021:

最近研究算法,发现属于N叉树所以修改了遍历。但我留下原来的代码已警示自己。

posted @ 2021-06-24 18:17  DisonTangor  阅读(86)  评论(0)    收藏  举报