Bonjour,
J'ai un treeview qui représente l'arborescence de toute la machine (disques, cd, lecteurs réseaux ...)
Mon problème, c'est que le chargement est très long ... (presque 1 min)
Je voudrais savoir s'il existe un moyen d'accélérer le chargement.
Voici comment je charge mon treeView:
Départ d'un composant BackGroundWorker
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 private void BGW_TREEVIEW_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorker bgw = sender as BackgroundWorker; TreeNode Machine = Initialize_machineNode(); bgw.ReportProgress(0, Machine); foreach (DriveInfo logicalDrive in _logicalDrives) { TreeNode Drive = Initialize_rootNode(logicalDrive); bgw.ReportProgress(1, Drive); } } //Initialisation de noeud MACHINE private TreeNode Initialize_machineNode() { TreeNode MachineNode = new TreeNode(); MachineNode.Name = _machine; MachineNode.Text = _machine; MachineNode.ImageKey = "tree_computer"; return MachineNode; } //Initialisation d'un noeud et de ses enfants pour un lecteur private TreeNode Initialize_rootNode(DriveInfo driveInfo) { TreeNode Drive = new TreeNode(); Drive = CreateDrive(driveInfo); CreateNode(Drive); return Drive; } //Création des noeuds pour les lecteurs private TreeNode CreateDrive(DriveInfo drive) { TreeNode tn = new TreeNode(); try { tn.Name = drive.Name; tn.Text = drive.Name; tn.Tag = drive.Name; tn.ToolTipText = "Lecteur: " + drive.DriveType.ToString() + "\n"; tn.ToolTipText += "Espace total: " + (drive.TotalSize / 1000000).ToString("00.00") + " Mo\n"; tn.ToolTipText += "Espace libre: " + (drive.AvailableFreeSpace / 1000000).ToString("00.00") + " Mo"; tn.ImageKey = SetDriveImageKey(drive); } catch (Exception e) { new Error().Write(e); tn.Name = drive.Name; tn.Text = drive.Name; tn.Tag = drive.Name; tn.ToolTipText = "Lecteur: ? \n"; tn.ToolTipText += "Espace total: ? \n"; tn.ToolTipText += "Espace libre: ? "; tn.ImageKey = SetDriveImageKey(drive); } return tn; } //Création des noeuds enfants (fonction récursive) private void CreateNode(TreeNode Father) { try { foreach (DirectoryInfo dir in new DirectoryInfo(Father.Tag.ToString()).GetDirectories()) { TreeNode tn = new TreeNode(); tn.Name = dir.FullName; tn.Tag = dir.FullName; tn.Text = dir.Name; tn.ToolTipText = "Dernière modification: " + dir.LastWriteTime.ToLongDateString(); tn.ImageKey = "tree_document_closed"; Father.Nodes.Add(tn); _totalDirectoryInSystem++; CreateNode(tn); } } catch (Exception e) { new Error().Write(e); } }
Merci beaucoup pour votre aide !!
Partager