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 : Sélectionner tout - Visualiser dans une fenêtre à part
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