VB.NET Chargement optimisé du treeview
Bonjour,
Bon voila la suite de mes problèmes avec le treeview (treeview et moi ça fait 2).
Sur mon ancien post je demandais de l'aide pour pouvoir charger le treeview du (C:\) sans les dossier protégés.
Le post a été résolut grâce à Wallace1 (encore une fois) sauf que le chargement s'en est trouvé très long (12s).
On me dit :
"Si tu veux accélérer le chargement des données, tu peux au début ne charger que les deux premiers niveaux de l'arborescence. Ensuite lorsque l'utilisateur déplie un nœud, tu vas chercher les deux sous-niveaux suivants, et ainsi de suite."
J'ai beau chercher sur d'autres forum et site, je ne trouve rien de concluant.
J'ai vu qu'on pouvait utiliser le "VirtualizingStackPanel.IsVirtualizing" (je sais même pas à quoi ça sert, c'est mal expliqué dans msdn.microsoft) et aussi la propriété "expand" mais je sais pas où les placer dans le code ni comment s'en servir.
Quelqu'un pour m'aider?
Voici mon code:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| Imports System.IO
Public Class Form2
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub PopulateTreeView()
Dim rootNode As TreeNode
Dim info As New DirectoryInfo("C:\")
If info.Exists Then
rootNode = New TreeNode(info.Name)
rootNode.Tag = info
rootNode.Expand()
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
aNode = New TreeNode(subDir.Name, 0, 0)
aNode.Tag = subDir
aNode.ImageKey = "folder"
Try
subSubDirs = subDir.GetDirectories()
Catch e As UnauthorizedAccessException
subSubDirs = Nothing
End Try
If Not subSubDirs Is Nothing Then
If subSubDirs.Length <> 0 Then
GetDirectories(subSubDirs, aNode)
End If
End If
If Not subDir.Attributes = (FileAttributes.Hidden Or subDir.Attributes) Then
nodeToAddTo.Nodes.Add(aNode)
End If
Next subDir
End Sub
Public Sub New()
InitializeComponent()
PopulateTreeView()
End Sub 'New |