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 :
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");
donne :
Racine
......¦
......-1erniveau
......|........|
......|........-2emeniveau
......-1erniveau2
Racine2
......|
......-1erniveau

Voici le code :
[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
 
  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;
             }
         }
     }
  }
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...