怎么样获取当前节点下个数和子节点的个数

何宏琳 2011-05-09 10:21:28
在当前节点下,包包括几个文件,在节点上显示该节点下存在几个文件,节点下还存在子节点,子节点还存在文件,现在我要计算所有节点的文件个数包括当前节点的文件个数和子节点的文件个数,求高手解释,,要C#代码,写函数方法
...全文
311 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
随我歌唱 2011-05-09
  • 打赏
  • 举报
回复
IList<TreeInfo> treeDatas;
//获得所有当前的节点,TreeListNode node为你传入的节点

IList<TreeListNode> GetAllNodeList(TreeListNode node)
{
List<TreeListNode> nodeList = new List<TreeListNode>();
foreach (TreeListNode n in node.Nodes)
{
nodeList.Add(n);
FillListNode(n, nodeList);
}
return nodeList;
}
//利用递归循环调用,填充GetAllNodeList
void FillListNode(TreeListNode node, IList<TreeListNode> nodeList)
{
foreach (TreeListNode n in node.Nodes)
{
nodeList.Add(n);
FillListNode(n, nodeList);
}
}
//加载树信息
void LoadTree()
{
tlvMain.Nodes[0].Nodes.Clear();
treeDatas = _bct.GetAll();
IList<TreeInfo> roots = GetNodes(treeDatas, 1, 0, 0);
foreach TreeInfo ct in roots)
{
TreeListNode listNode = CreateListNode(ct);
tlvMain.Nodes[0].Nodes.Add(listNode);
AppendNode(listNode, treeDatas);
}
}
//如果存在子节点,利用递归循环调用
void AppendNode(TreeListNode parent, IList<TreeInfo> list)
{
TreeInfoct = parent.Tag as TreeInfo
IList<TreeInfo> nodes = GetNodes(list, ct.Level + 1, ct.Left, ct.Right);
foreach (TreeInfo ct2 in nodes)
{
TreeListNode listNode = CreateListNode(ct2);
parent.Nodes.Add(listNode);
AppendNode(listNode, list);
}
}

//获得每个节点的信息,并显示,这里用到了linq查询
IList<TreeInfo> GetNodes(IList<TreeInfo> list, int levelId, int left, int right)
{
var q = from ct in list
where ct.Level == levelId
select ct;
if (left != 0 && right != 0)
q = q.Where(w => w.Left > left & w.Right < right);
return q.ToList();
}

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧