用搜索好象也不行,因为搜索是全部的东东都搜索。
比如:a-aa-aaa-aaaa
| | |
| | aab-aaba
| ab-aba
b-ba-baa
|
bb-bba
比如:
象这样的树图,aaaa是a下面的一个元素,ab也是a下面的一个元素,但aaaa不是ab下的,aab也不是ab下的,aba是ab下的
我要如何来判断它?
就是我想得到以下值:
aaaa与a值为True
aaaa与ab值为False
aba与a为True
aba与b为False
说到底了,就是要判断某一个node是不是在另一个node下面。
因为我需要做这样的事:将一个node移动到另一个node下面。
我发现:我将a移到aaaa下的时候,这个a就完全不见了!包括它后面的所有ch东东。这个的移动理论上它也是相孛的,是一个死循环。因此,我要防止这样的事情发生。所以要有一个判断,这个aaaa是不是a下面的一个元素,如果则提示并不远行,如不是,则运行。
比如:a-aa-aaa-aaaa
| | |
| | aab-aaba
| ab-aba
b-ba-baa
|
bb-bba
比如:
象这样的树图,aaaa是a下面的一个元素,ab也是a下面的一个元素,但aaaa不是ab下的,aab也不是ab下的,aba是ab下的
我要如何来判断它?
就是我想得到以下值:
aaaa与a值为True
aaaa与ab值为False
aba与a为True
aba与b为False
说到底了,就是要判断某一个node是不是在另一个node下面。
因为我需要做这样的事:将一个node移动到另一个node下面。
我发现:我将a移到aaaa下的时候,这个a就完全不见了!包括它后面的所有ch东东。这个的移动理论上它也是相孛的,是一个死循环。因此,我要防止这样的事情发生。所以要有一个判断,这个aaaa是不是a下面的一个元素,如果则提示并不远行,如不是,则运行。
'测试过程
Private Sub Form_Load()
'初始化数据
TreeView1.Nodes.Add , , "AA", "AA"
TreeView1.Nodes.Add "AA", 4, "BB", "BB"
TreeView1.Nodes.Add "BB", 4, "CC", "CC"
TreeView1.Nodes.Add , , "A1", "A1"
TreeView1.Nodes.Add "A1", 4, "B1", "B1"
TreeView1.Nodes.Add "B1", 4, "C1", "C1" '调用函数取得节点对比状态
MsgBox IsNodeParent(TreeView1.Nodes!AA, TreeView1.Nodes!CC)
MsgBox IsNodeParent(TreeView1.Nodes!A1, TreeView1.Nodes!CC)
End Sub'这个是判断字节点是否在指定父节点的函数过程
Private Function IsNodeParent(PObject As Node, CObject As Node) As Boolean
Dim IsLoop As Boolean
Dim TempObject As Node
Dim ReturnState As Boolean
Set TempObject = CObject
If TempObject Is Nothing Then IsNodeParent = False: Exit Function
ReturnState = False
IsLoop = True
Do
If TempObject.Parent Is PObject Then
ReturnState = True
IsLoop = False
Else
Set TempObject = TempObject.Parent
End If
If IsLoop = True Then
If TempObject Is Nothing Then
IsLoop = False
End If
End If
Loop While IsLoop
IsNodeParent = ReturnState
End Function