C# TreeView 递归问题 求教

privatevoidmyTv(intparentId,TreeNodeupNode){DataViewdv=newDataView(dt);dv.RowFilter="... private void myTv(int parentId, TreeNode upNode)
{
DataView dv = new DataView(dt);
dv.RowFilter = "i_ParentId =" + parentId;
for(int i = 0;i < dv.Count;i++)
{
TreeNode newNode = tvType.Nodes.Add(dv[i][1].ToString());
myTv(Int32.Parse(dv[i][0].ToString()), newNode);
}
}
数据表是
Id Name ParentId
1 商品 0
2 用品 1
3 食品 1
4 纸巾 2
5 杯子 2
6 风扇 2
7 大米 3
8 小米 3
9 芝麻 3
我想知道上面代码的执行顺序是怎么样的。。
其实我主要是不明白for循环里的myTv是怎么执行的..
比如for循环要执行2次,那myTv执行一次就跳出去了,怎么执行第二次?
展开
 我来答
绮罗光阴眠灯待月co
2011-06-29 · TA获得超过134个赞
知道答主
回答量:170
采纳率:0%
帮助的人:83万
展开全部
在使用treeview的时候,递归是为了加载节点的子节点,之道该节点没有子节点。
而递归里面的那个for循环是为了把某个节点的所有子节点全部加载完毕。

要理解你上面的代码其实很简单,先把那个递归的去掉,也就是没有递归,那么结果应该很简单,然后回过头来看看 递归是在什么时候调用的。

我想你应该能够理解了
追问
理解了..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ThinkIBM
2011-06-29 · TA获得超过5289个赞
知道大有可为答主
回答量:3263
采纳率:0%
帮助的人:5478万
展开全部
按你的表,执行顺序是
调用 myTv(0, node),for循环执行2次
第1次调用myTv(2, node) 这里又递归调用3次,分别为myTv(4, node)和5,6
第2次调用myTv(3, node) 这里又递归调用3次,分别为myTv(7, node)和8,9

在调用myTv(4, node)到myTv(9, node)时,因为dv.Count为空,就一级级返回上层,明白吗
追问
知道了..
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式