VB.Net Treeview“回滚”

时间:2012-12-12 18:51:34

标签: vb.net recursion treeview

我正在动态填充树视图,所以我不知道我可能有多少级别。

有没有办法回滚到上一级?以下是我的代码示例:

Private Sub RecursiveTreeAssembly(FileName As String, node As TreeNodeCollection)
    'Sets sFileNamePath to correct path value
    FileNameToFilePath(FileName)

    'Start SolidEdge
    StartSolidEdge()

    'Open document
    OpenSolidEdgeDocument(sFileNamePath)

    'Get the parts list for the opened document (FileName)
    partList = clsPartInformation.GetAll()

    'Populate tree View
    If partList.Count > 0 Then
        'PartsList retrieved, close document
        CloseSolidEdgeDocument(FileName)

        'Go through all part lists and display them in tree view
        For i As Integer = 0 To partList.Count - 1
            'Is it Assembly, Parametric, Material, Part to buy
            If IsAssembly(partList(i).Part_No) Then
                node(iterator).Nodes.Add(partList(i).Part_No)
            ElseIf IsMaterial(partList(i).Part_No) Then
                node(iterator).Nodes.Add(partList(i).Part_No)
            ElseIf IsPart(partList(i).Part_No) Then
                node(iterator).Nodes.Add(partList(i).Part_No)
            End If

            tvDessins.ExpandAll()
        Next
    End If

    'Go through tree view to populate it
    While iterator < tvDessins.Nodes(0).Nodes.Count
        If rollback Then
            node = tvDessins.Nodes
            currFileName = node(0).Nodes.Item(iterator).Text
        Else
            currFileName = node(iterator).Nodes.Item(0).Text
        End If

        If IsAssembly(currFileName) Then
            rollback = False
            'Call itself again
            RecursiveTreeAssembly(currFileName, node(0).Nodes)
        Else
            'Rollback nodes
            rollback = True
        End If

        iterator += 1
    End While
End Sub

tvDessin是我的树视图。在下面的代码中,我将迭代遍历给出一些项目的树视图。我的零件清单包含零件编号,效果很好。

在我的回滚过程中,我将树节点设置为开头: node = tvDessins.Nodes

而不是简单地转到父节点......这就是我想要实现的目标!

谢谢,抱歉这么长的帖子。

1 个答案:

答案 0 :(得分:0)

我明白了。

以下是答案:

If rollback Then
    currFileName = node.Item(0).Parent.Nodes(iterator).Text 'retrieves parent
Else
    currFileName = node(iterator).Nodes.Item(0).Text
End If