TreeView - modification de la classe TreeNode

allezlesgars Messages postés 1 Date d'inscription lundi 29 juin 2009 Statut Membre Dernière intervention 30 juillet 2009 - 30 juil. 2009 à 14:57
speroyves Messages postés 4 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 10 juillet 2012 - 22 mars 2010 à 01:10
Bonjour à tous,

Je planche en ce moment sur un programme permettant de fournir des informations issues de 3DB de "niveaux" différents (de plus en plus précis).

Pour cela je dois créer un TreeView donc chaque noeud serait un DataGrid (tableau à une seule ligne). On doit pouvoir développer l'arbre si l'on veut des détails ou le réduire.

Et comme un petit dessin vaut mieux qu'une longue explication... (excusez mon art primaire)


Je me suis lancé dans une dérivation de la classe TreeNode :
class myTreeNode : TreeNode
        {
            public DataGridView myGrid;
            //constr_vide
            public myTreeNode()
            {
                this.myGrid = new DataGridView();
                this.Text = "grid_par_defaut";
                this.Tag = 1;
            }
            //constr_avec_dg
            public myTreeNode(DataGridView mg)
            {
                this.myGrid = mg;
                this.Text = "ma_grid_perso";
                this.Tag = 1;
            }
         }


Ensuite il faut pouvoir afficher la grille et c'est là que je bloque. J'ai essayé de réécrire la classe TreeViewOwnerDraw mais sans succès, et je ne sais même pas si c'est par là qu'il faut passer... Je pensais tester le Tag pour différencier les noeuds "normaux" de mes noeuds modifiés.

public class TreeViewOwnerDraw : Form
        {
            private TreeView myTreeView;
            public TreeViewOwnerDraw(TreeView myTreeView)
            {
                myTreeView.DrawMode = TreeViewDrawMode.OwnerDrawText;
                myTreeView.DrawNode +=
                    new DrawTreeNodeEventHandler(myTreeView_DrawNode);  
            }
            private void myTreeView_DrawNode(object sender, DrawTreeNodeEventArgs e)
            {
                TreeNode noeud_ref = new TreeNode();
                noeud_ref.Tag = 0;
                if (e.Node.Tag != noeud_ref.Tag)
                {
                    e.DrawDefault = true;
                }
                else
                {
                    Graphics g = e.Graphics;
                    g.Draw  ???
                }
            }
        }  


Mon code est-il correct ? Suis-je dans la bonne direction ?
Merci pour toutes vos idées !

1 réponse

speroyves Messages postés 4 Date d'inscription jeudi 13 septembre 2007 Statut Membre Dernière intervention 10 juillet 2012
22 mars 2010 à 01:10
Vérifie si tu peux trouver ton bonheur sur ce lien...Et dis-moi si 7bon?
http://blogs.msdn.com/markrideout/archive/2006/01/08/510700.aspx
0
Rejoignez-nous