以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] Do ...Loop语句 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=35356) |
-- 作者:东坡一剑 -- 发布时间:2013/6/27 22:09:00 -- [求助] Do ...Loop语句 我在学习《递归函数使用实例》一节时,下面的代码有个地方始终想不通,看看各位高手能不能帮忙指点一下
Dim trv As WinForm.TreeView = e.Form.Controls("TreeView1")
按我的理解 ids = ids & "\'" & nd.name & "\'" 只有当 pd.Name = key 时 才会执行 而每次双击的节点只有一个 因此加进 ids 字符串的节点名称只会有一个,也就是说 ids 始终只有一个节点名称的长度 所以Table的Filter 永远只能筛查一行
我知道自己的理解错了,但不知错在哪里,请高手指点。 是不是对 Do Loop 语句的理解有误? 如果是这样,错在哪里? 这方面的知识又该怎么补学?
[此贴子已经被作者于2013-6-27 22:18:39编辑过]
|
-- 作者:Bin -- 发布时间:2013/6/28 8:53:00 -- For Each nd As WinForm.TreeNode In trv.AllNodes Dim pd As WinForm.TreeNode = nd Do If pd.Name = key Then If ids > "" Then ids= ids & "," End If ids = ids & "\'" & nd.name & "\'" \'此处当然要用 nd.name 你要添加的是当前节点, 而pd很有可能是父节点,因为如果IF条件不成立执行到ELSE就会为PD赋值为父节点 Exit Do Else pd = pd.ParentNode If pd Is Nothing Then Exit Do End If End If Loop Next 其实就是循环所有节点,判断这个节点是否等于KEY 如果不等于就看看他父亲是否等于KEY 依然不是,继续循环 也就是DO LOOP 找光他祖宗十八代看看有人 等于 KEY的没. 如果有 都加到IDS里面来 从而就得到当前节点的的所有子节点了.
|