Pas vraiment sur que mon post doivent par ici, mais je trouvais pas un autre endroit pour le mettre ^^.
Donc après plusieurs heures de recherche et un peu,pardon très peu, de réflexion j'ai enfin réussi à avoir un code C++/CLI qui permet de remplir un TreeView en fonction d'un tableau de string.
Ce code est très fortement inspirer de ce post qui parle de la même chose, mais en C# (juste une transformation pour qu'il soit supporter par CLI).
Enjoy it ^^
Exemple :
donne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 List<String^> list = gcnew List<String ^>(); list.add("Racine/1erniveau/2emeniveau"); list.add("Racine2/1erniveau"); list.add("Racine/1erniveau2");
Racine
......¦
......-1erniveau
......|........|
......|........-2emeniveau
......-1erniveau2
Racine2
......|
......-1erniveau
Voici le code :
[code]
Vu le temps qu'il m'a fallu pour le trouver je me suis dit que ca serait pas un mal de le poster par ici en espérant qu'il puisse servir à d'autre...
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 TreeNode^ myPreviousNode; for each (String^ myPath in list) { cli::array<String^>^ partofpath = myPath->Split('/'); if (treeTest->Nodes->Count == 0) { for (int i = 0; i < partofpath->Length; i++) { TreeNode^ myNode = gcnew TreeNode(partofpath[i]); if (!myPreviousNode) treeTest->Nodes->Add(myNode); else myPreviousNode->Nodes->Add(myNode); myPreviousNode = myNode; } } else { TreeNodeCollection^ myCurrentNode = treeTest->Nodes; for (int i = 0; i < partofpath->Length; i++) { bool IsAlreadyAdded = false; for each (TreeNode^ curTree in myCurrentNode) { if (curTree->Text->Equals(partofpath[i])) { IsAlreadyAdded = true; myCurrentNode = curTree->Nodes; break; } } if (IsAlreadyAdded == false) { TreeNode^ myNode = gcnew TreeNode(partofpath[i]); myCurrentNode->Add(myNode); myCurrentNode = myNode->Nodes; } } } }
Partager