Vb6 如何基于父节点属性更新TreeView子节点

Vb6 如何基于父节点属性更新TreeView子节点,vb6,Vb6,在树状视图中,如何仅当父节点的图像为4且任何子节点的图像为3时才执行代码 If TreeView2.Nodes(ii).Image = 4 And TreeView2.Nodes(ii).Image = 3 Then. 出于某种原因,如果TreeView2.Nodes(ii).Image=4检查父级和子级,我不知道为什么 如果TreeView2.Nodes(ii).parent.child.image=3,我试图使用,但它工作不正常。TreeView2.Nodes(ii).parent总是什么

在树状视图中,如何仅当父节点的
图像
为4且任何子节点的图像为3时才执行代码

If TreeView2.Nodes(ii).Image = 4 And TreeView2.Nodes(ii).Image = 3 Then.
出于某种原因,如果TreeView2.Nodes(ii).Image=4检查父级和子级,我不知道为什么

如果TreeView2.Nodes(ii).parent.child.image=3,我试图使用
,但它工作不正常。

TreeView2.Nodes(ii).parent
总是什么都不是。树视图中的顶级节点没有父节点。当您使用
TreeView2.Nodes(ii).parent.child
时,肯定会出现错误。使用
parent.child
将仅用于获取父节点的第一个子节点,这可能不是您正在尝试执行的操作

听起来您希望执行以下操作:

Dim objRootNode As Node
Dim objChildNode As Node
Dim iRootCounter As Integer
Dim iChildCounter As Integer

For iRootCounter = 1 To TreeView1.Nodes.Count

    Set objRootNode = TreeView1.Nodes(iRootCounter)

    If objRootNode.Image = 4 Then

        Set objChildNode = objRootNode.Child ' Gets first child

        For iChildCounter = 1 To objRootNode.Children

            If objChildNode.Image = 3 Then
                ' Write your code here
            End If

            Set objChildNode = objChildNode.Next ' Get next node

        Next

    End If

Next

在显示
的位置添加代码,在此处编写代码
。这是父循环的
Image=4
和子循环的
Image=3

A
for
循环在满足终止条件时结束的地方<为TreeView2.Nodes中的每个Nodex2编码>在到达TreeView2.Nodes中的最后一个节点时结束。循环将只运行一次。除非您编写代码使其重复,否则它不会重复。您的问题很不清楚-您是否尝试过使用调试器逐步检查代码以查看它到底在做什么?此外,如果您学会正确缩进代码,跟踪执行和逻辑将更容易。您的缩进是一个真正的混乱,这使得理解执行流程很难遵循。
Treeview2.Nodes(ii)。Image=4和Treeview2.Nodes(ii)。Image=3不可能是真的。
节点(ii).Image
不可能同时等于4和3。和
节点(ii).Parent.Child.Image
与节点本身的映像相同-它是父节点的子节点。如何检查和验证在编码之前,父节点是否为4,子节点是否为3executes@KenWhite
节点(ii).Parent.Child.Image
是父节点的第一个子节点的
图像
,它不一定与节点本身相同。@ÉtienneLaneville:你说得对。我本可以说得更好。然而,这仍然不是海报所要寻找的,而且这并没有改变
Image=4和Image=3不可能是真的。:-)很乐意帮忙。TreeView比普通的树结构(如文件夹和文件)更难使用。您可以对每个
语句使用
遍历顶级注释(这很好,因为您只处理单个对象),但不能对子对象执行此操作。您希望能够为objNode.Children中的每个objChild执行
,但这不是它在TreeView中的工作方式。