[CODE] Passer d'un tableau String^ à une Hierarchie dans un TreeView
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:
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:
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...