Impossible de visualiser le noeud racine d'un TreeView [Résolu]

Signaler
Messages postés
3
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
20 avril 2009
-
Messages postés
3
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
20 avril 2009
-
Bonjour,

Description du problème

Lorsque que mon TreeView contient un seul noeud racine (non développé), celui-ci est invisible à l'affichage. Cependant il est bel et bien là ! Lorsque je double clique sur l'endroit où il devrait être affiché , le noeud apparait et s'étend correctement.

Précisions

 - Langage : C#
 - Framework .NET 2.0
 - Visual Studio 2005
 - Le composant est rempli au chargement de la fenetre (méthode Load). Mais le problème est le même s'il est chargé ultérieurement.

Tests effectués

 - Le TreeView est correctement chargé. La collection Nodes contient bien le noeud invisible.
 - Le fait que le noeud ait des fils ou non ne change rien au problème.
 - Si le noeud possède des fils, l'ajout d'un "expand" ou "expandAll" après le chargement ne résout rien.
 - TreeView avec deux noeuds racines : l'affichage est correct.
 - Comparaison de toutes les propriétés avec un TreeView fonctionnel dans le même cas. Elles sont identiques.
 - Comparaison de toutes les propriétés avec un TreeView contenant deux noeuds racines. Elles sont identiques.
 - Ajout d'un bouton permettant de supprimer un noeud du TreeView. Lorsque le TreeView contient deux noeuds racines, ceux-ci s'affichent correctement. Après clic sur le bouton (donc suppression d'un des deux noeuds), le seul noeud restant devient invisible (mais est toujours présent !).
 - Aucun évenemement pouvant redessiner la fenêtre n'est affiché.

Si vous voyez une solution à ce problème, merci de m'en faire part.

3 réponses

Messages postés
3
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
20 avril 2009

Problème résolu !

Cela venait du chargement des images dans le ImageList de la TreeView. Il faut le faire dans le constructeur de la fenêtre pour éviter ce problème et non pas dans la méthode Load.
Messages postés
834
Date d'inscription
samedi 15 novembre 2008
Statut
Membre
Dernière intervention
14 janvier 2017
29
Bonjour,

Etrange comportement, ça ressemble à un Bug, mais à ma connaissance il n'y a rien de référencé autour de ça.

j'aimerais bien voir le code lol.

C# is amazing, enjoy it!
Messages postés
3
Date d'inscription
vendredi 17 avril 2009
Statut
Membre
Dernière intervention
20 avril 2009

Voici le code. Ici il y a deux noeuds racines donc l'affichage se fait. Si on en enlève un, le noeud restant est invisible.

namespace Evrh.SelUF
{
    public partial class SelUFForm : Form
    {

        #region Attributs

        private ControlEntiteStructure m_control;

        private String pointGestion = "";
        public String PointGestion
        {
            get { return pointGestion; }
            set { pointGestion = value; }
        }

        private String axe;
        public String Axe
        {
            get { return axe; }
        }

        private int niveau;
        public int Niveau
        {
            get { return niveau; }
            set { niveau = value; }
        }

        private String affectation;
        public String Affectation
        {
          get { return affectation; }
          set { affectation = value; }
        }

        private String codEntite;
        public String CodEntite
        {
            get { return codEntite; }
            set { codEntite = value; }
        }

        private String libEntite;
        public String LibEntite
        {
            get { return libEntite; }
            set { libEntite = value; }
        }

        private EntiteStructure entiteSelectionnee;
        public EntiteStructure EntiteSelectionnee
        {
            get { return entiteSelectionnee; }
        }

        public TreeView StructureTreeView
        {
            get { return structureTreeView; }
        }

        private bool visibleByPTG;

        private TreeNode currentNode;

        #endregion Attributs

        //**********************************************************************

        public SelUFForm()
        {
            InitializeComponent();

            m_control = new ControlEntiteStructure(this);

          
        }

        //**********************************************************************

        private void SelUFForm_Load(object sender, EventArgs e)
        {
            ListeNomenclatures.chargerListControl(pointGestComboBox, "AGTPTG");
            ListeNomenclatures.chargerListControl(axeComboBox, "ST_AXE");

            StructureTreeView.ImageList = new ImageList();
            StructureTreeView.ImageList.Images.Add(Properties.Resources.dossier_ouvert);
            StructureTreeView.ImageList.Images.Add(Properties.Resources.uf);

            //m_control.loadNextLevel(1, "R", null, "");

            
            // Dans ce cas, il y a affichage
            TreeNode test = new TreeNode("Noeud1");     
            TreeNode test1 = new TreeNode("Noued2", 0, 0);
            structureTreeView.Nodes.Add(test);
            structureTreeView.Nodes.Add(test1);        
        }

        //**********************************************************************

        #region Evenements

        private void quitButton_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        //**********************************************************************

        private void validerButton_Click(object sender, EventArgs e)
        {
            if (structureTreeView.SelectedNode != null)
            {
                entiteSelectionnee = m_control.validerEntite();
                this.Close();
            }
            else
                MessageBox.Show("Aucune entité sélectionnée.", "Aucune sélection", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }

        //**********************************************************************

        private void searchButton_Click(object sender, EventArgs e)
        {
            if (axeComboBox.Text != null && axeComboBox.Text != ""
                && niveauComboBox.Text != null && niveauComboBox.Text != "")
            {
                structureTreeView.Nodes.Clear();
                m_control.chargerArbre();
            }
        }

        //**********************************************************************

        private void gommeButton_Click(object sender, EventArgs e)
        {
            pointGestComboBox.ResetText();
            axeComboBox.ResetText();
            niveauComboBox.ResetText();
            codEntiteTextBox.ResetText();
            libEntiteTextBox.ResetText();
            structureTreeView.Nodes.Clear();
        }

        //**********************************************************************

        private void pointGestComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (pointGestComboBox.Text != "")
                pointGestion = ListeNomenclatures.getCodeElement("AGTPTG", pointGestComboBox.Text);
        }

        //**********************************************************************

        private void axeComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            niveauComboBox.Items.Clear();
            niveauComboBox.ResetText();

            if (axeComboBox.Text != "")
            {
                axe = ListeNomenclatures.getCodeElement("ST_AXE", axeComboBox.Text);
                ListeNomenclatures.chargerListControlNiveau(niveauComboBox, "ST_NIS", "1", Axe, AFFICHER.CODE_LIBELLE);
            }
        }

        //**********************************************************************

        private void niveauComboBox_SelectedIndexChanged(object sender, EventArgs e)
        {
            codEntiteTextBox.ResetText();
            libEntiteTextBox.ResetText();

            niveau = Convert.ToInt32(niveauComboBox.Text.Split(',')[0]);

            if (axeComboBox.Text != null && axeComboBox.Text != "")
            {
                structureTreeView.Nodes.Clear();
                m_control.chargerArbre();
            }
        }

        //**********************************************************************

        private void codEntiteTextBox_TextChanged(object sender, EventArgs e)
        {
            codEntite = codEntiteTextBox.Text;
            libEntite = libEntiteTextBox.Text;
        }

        //**********************************************************************

        private void structureTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
        {
            //String libNiveau;
            //String selectNode = structureTreeView.SelectedNode.Text;
            //String[] attSelectedNode = selectNode.Split(',');

            //codEntite = attSelectedNode[0];
            //libEntite = attSelectedNode[1].Trim();

            //libNiveau = ListeNomenclatures.getLibelleElement("ST_NIS", Convert.ToString(structureTreeView.SelectedNode.Level));
            //niveau = ListeNomenclatures.getCodeElement("ST_NIS", libNiveau);
        }

        //**********************************************************************

        private void structureTreeView_AfterSelect(object sender, TreeViewEventArgs e)
        {
            currentNode = ((TreeView)sender).SelectedNode;

            m_control.loadNextLevel(((EntiteStructure)currentNode.Tag).Niveau, ((EntiteStructure)currentNode.Tag).Axe, currentNode, PointGestion);
        }

        #endregion Evenements

        private void structureTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e)
        {

        }

    }
}