2010-07-01 9 views
0

Les éléments du noeud enfant semblent se répliquer à chaque fois lorsqu'ils sont développés à partir d'un état réduit. Je pense que le problème est que la mémoire doit être effacée avant de prendre de l'expansion. Quelqu'un peut-il voir pourquoi cet événement se produirait. Merci d'avance.Treenode Dupliquer lors de l'expansion à partir de l'effondrement

Public Sub FillTree(ByVal s As String) 
     Dim nodeText As String = "" 
     Dim sb As New C_StringBuilder 
     With My.Computer.FileSystem 
      For i As Integer = 0 To .Drives.Count - 1 
       '** Build the drive's node text 
       sb.ClearText() 
       sb.AppendText(.Drives(i).Name.ToString) 
       nodeText = sb.FullText 
       'Check to see if DropDown Selection is the same as what has been read into i 
       If (sb.FullText = s) Then 
        '** Add the drive to the treeview 
        Dim driveNode As TreeNode 
        tvFolders.Nodes.Clear() 
        driveNode = tvFolders.Nodes.Add(nodeText) 
        driveNode.Tag = .Drives(i).Name 
        '** Add the next level of subfolders 
        ListLocalSubFolders(driveNode, .Drives(i).Name) 
       End If 
      Next 
     End With 
    End Sub 

Private Sub ListLocalSubFolders(ByVal ParentNode As TreeNode, ByVal sParentPath As String) 
    ' ' Add all local subfolders below the passed Local treeview node 
    Dim s As String 
    Try 
     For Each s In Directory.GetDirectories(sParentPath) 
      Dim childNode As TreeNode 
      childNode = ParentNode.Nodes.Add(FilenameFromPath(s)) 
      childNode = Nothing 
     Next 
    Catch ex As Exception 
    End Try 
End Sub 

Private Sub tvFolders_BeforeExpand(ByVal sender As Object, ByVal e As System.Windows.Forms.TreeViewCancelEventArgs) Handles tvFolders.BeforeExpand 

    ' Populate all child nodes below the selected node 
    Dim parentPath As String = e.Node.Tag 
    Dim childNode As TreeNode = e.Node.FirstNode 
    Do While childNode IsNot Nothing 
     ListLocalSubFolders(childNode, parentPath & childNode.Text) 
     childNode = childNode.NextNode 
    Loop 


End Sub 

Répondre

0

cette ligne doit:

ListLocalSubFolders(childNode, parentPath & childNode.Text) 

regarde pas comme ça:

ListLocalSubFolders(childNode, childNode.Text) 

?

Sinon, vous obtiendrez f.e. quelque chose comme ceci: "C: \ C: \ $ Recycle.Bin"

+0

Merci mais cela combine réellement le nœud parent avec le nœud enfant et les rendre extensibles. – jpavlov