回复 20楼 csyx
哈哈!是的,这个比喻好形象
以下是引用csyx在2022-7-13 09:13:34的发言:
如果只是遍历子节点,几行代码就够了
1. 新建一个表单方法: 遍历子节点,代码如下
Lparameters oNode
? oNode.FullPath
Local oo
If oNode.Children > 0
oo = oNode.Child
Do while !IsNull(oo)
This.遍历子节点(oo)
oo = oo.Next
EndDo
EndIf
2. 遍历子节点按钮.Click 调用它:
Thisform.遍历子节点(Thisform.treeView1.SelectedItem)
如果只是遍历子节点,几行代码就够了
1. 新建一个表单方法: 遍历子节点,代码如下
Lparameters oNode
? oNode.FullPath
Local oo
If oNode.Children > 0
oo = oNode.Child
Do while !IsNull(oo)
This.遍历子节点(oo)
oo = oo.Next
EndDo
EndIf
2. 遍历子节点按钮.Click 调用它:
Thisform.遍历子节点(Thisform.treeView1.SelectedItem)
大佬!再请教:用你的递归遍历子节点,现在当我用这个查找子节点时,如果找到结果,则立即退出递归!请问:当满足条件时如何退出递归?谢谢!
Lparameters oNode,tcSelectKey
Local oCurNode,ChildKey,isIndetical
isIdentical = .F.
*ChildKey = oNode.Key
a = Alltrim(oNode.Key)
Messagebox(a+tcSelectKey,0,"")
If a == Alltrim(tcSelectKey)
isIndetical = .T.
Messagebox("相同了,找到啦!",0,"")
Return &&这里应该退出了,并返回.T.,但是还是会继续下去,直至最后
Else
isIndetical = .F.
Endif
If oNode.Children > 0
oCurNode = oNode.Child
Do While !Isnull(oCurNode)
This.findTreeNode(oCurNode,tcSelectKey)
oCurNode = oCurNode.Next
Enddo
Endif
Return isIndetical
[此贴子已经被作者于2022-7-14 18:42编辑过]