Hallo Ihr Spezialisten. Seit laaaangem melde ich mich mal wieder. Ichhabe ein kleines Problem beim erstellen eines Treeview von Drive C:.
Da ich nicht auf alle Ordner Zugriff habe, ist es mir nicht möglich den Inhalt dieser Ordner darzustellen. Daher habe ich das dann mit Try - Catch einfach raus genommen. Problem nun. Wird ein Ordner als Pfad selektiert der wie C: viele fehlende Berechtigungen besitzt so ist der Code recht langsam. Bis C im Treeview dargestellt wird dauert es dann schonmal ca. 10 Sekunden. Meine Frage an euch. Wie kann ich das verbessern? Evtl. versteckte Ordner oder Recycle nicht mit einbeziehen? Hier der Code zur Auflistung:
Der Pfad wird über "StartFolder" via Button und FolderBrowserDialog erledigt.
Da ich nicht auf alle Ordner Zugriff habe, ist es mir nicht möglich den Inhalt dieser Ordner darzustellen. Daher habe ich das dann mit Try - Catch einfach raus genommen. Problem nun. Wird ein Ordner als Pfad selektiert der wie C: viele fehlende Berechtigungen besitzt so ist der Code recht langsam. Bis C im Treeview dargestellt wird dauert es dann schonmal ca. 10 Sekunden. Meine Frage an euch. Wie kann ich das verbessern? Evtl. versteckte Ordner oder Recycle nicht mit einbeziehen? Hier der Code zur Auflistung:
Visual Basic-Quellcode
- Private Sub PopulateTreeView()
- Dim rootNode As TreeNode
- Dim info As New DirectoryInfo(startfolder)
- If info.Exists Then
- rootNode = New TreeNode(info.Name)
- rootNode.Tag = info
- GetDirectories(info.GetDirectories(), rootNode)
- TreeView1.Nodes.Add(rootNode)
- End If
- End Sub
- Private Sub GetDirectories(ByVal subDirs() As DirectoryInfo,
- ByVal nodeToAddTo As TreeNode)
- Dim aNode As TreeNode
- Dim subSubDirs() As DirectoryInfo
- Dim subDir As DirectoryInfo
- For Each subDir In subDirs
- Try
- aNode = New TreeNode(subDir.Name, 0, 0)
- aNode.Tag = subDir
- aNode.ImageKey = "folder"
- subSubDirs = subDir.GetDirectories()
- If subSubDirs.Length <> 0 Then
- GetDirectories(subSubDirs, aNode)
- End If
- nodeToAddTo.Nodes.Add(aNode)
- Catch ex As UnauthorizedAccessException
- ' MsgBox(Err.Description)
- End Try
- Next subDir
- End Sub
Der Pfad wird über "StartFolder" via Button und FolderBrowserDialog erledigt.