Bonjour. Histoire de progresser j'ai voulu étendre le TreeView et TreeNode pour peindre dessus comme je voulais et puis j'en suis venu à essayer de les recréer à partir de zéro.

Pour le TreeView j'ai une classe qui hérite de Panel histoire d'avoir un conteneur pour peindre.

Pour les TreeNodes, j'ai une autre classe qui hérite de Control.

J'ai aussi une troisième classe qui simule TreeNodeCollection et qui hérite de
List(Of MyCustomTreeNode)

Que ce soit mon TreeView ou tous les TreeNodes enfants, ils contiennent tous une instance de la classe perso TreeNodeCollection.

Je sais pas si c'est bien propre ce que je fais, mais jusque là ça va, je m'en sors à peu près pour créer de nouveaux noeuds et les ajouter aux bonnes collections dans les bons objets.
J'arrive même à les parcourir par récursivité la classe

Maintenant, je veux peindre dans mon TreeView en utilisant les propriétés de chaque TreeNode et je me rend compte que j'ai besoin d'implémenter la propriété "Level" du TreeNode pour l'indentation.

Et il est là mon problème ! en débuggant avec un vrai TreeNode, je me rend compte que cette propriété est renseignée quand on fait:
monNode.Nodes.Add(autreNode)

J'ai beau retourner le problème dans tous les sens, je ne vois pas comment, dans ma classe perso "TreeNodeCollection", je peux renseigner le level d'un nouveau node ajouté

Je me suis dis que le level de ce nouveau noeud devait logiquement être égal à celui de son noeud parent + 1.
Mais je ne vois pas comment récupérer l'instance de mon TreeNode qui "hébèrge" ma TreeNodeCollection, soit "ParentNode".

J'imagine qu'il y'a une façon de régler ce genre de problèmes, mais je plante...