IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Remplir un treeView de controle utilisateur


Sujet :

C#

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut Remplir un treeView de controle utilisateur
    Bonjour,

    Pour mon projet, j'ai créer un controle utilisateur dans lequel se trouve un TreeView.
    J'appel ce Contrôle dans un formulaire appelé MainForm.
    J'ai également un dictionnaire contenant des noms de tables en Key et des tableau de string avec les champs de cette table dans value.
    Je souhaite recréer l'arborescence dans mon treeview grace aux données de mon dictionnaire, mais comment ?
    Si plus d'informations sont nécessaires à la compréhension du problème n'hésitez pas
    Merci

  2. #2
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Salut,

    ta demande semble plutôt compréhensible, mais où coinces-tu exactement ?
    Parce que là je vois pas trop la complexité du truc en fait (un foreach sur ton dico avec des TreeView.Nodes.Add()).
    Plus je connais de langages, plus j'aime le C.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    En faite, lorsque j'ai crée mon contrôle utilisateur et ensuite je l'ai intégré à mon Formulaire principal. Dans le code de ce formulaire je rempli un dictionnaire, que je veux intégrer au treeView. Or lorsque dans le designer du Formulaire, je clic sur le treeView, Cela selectionne tout le controle utilisateur, je ne peux donc pas faire un TreeView.Nodes.Add

  4. #4
    Membre actif
    Homme Profil pro
    Analyste Programmeur
    Inscrit en
    Septembre 2008
    Messages
    176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Analyste Programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 176
    Points : 297
    Points
    297
    Par défaut
    Bonjour,

    Le TreeView.Nodes.Add, c'est par code qu'il faut le faire, pas dans le designer.
    Si je comprend bien ta demande, c'est au contrôle utilisateur de remplir le TreeView avec ce que tu as mis dans le Dictionary.

    Bonne continuation.
    L’aléatoire n’existe pas en informatique, c’est juste un moyen de dire que l’on a pas encore compris.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Oui c'est ça, je veux remplir mon treeView via le contrôle utilisateur et ce par le code

  6. #6
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Bonjour,
    Si je puis me permettre, ce n'est pas avec ce type de réponse que tu vas avancer. Tu ne donnes aucune info qui indique où tu coinces exactement.
    Pour remplir ton Treeview, la MainForm passe le Dictionary au Usercontrol qui s'occupe alors de remplir le Treeview avec TreeView.Nodes.Add.
    Si cette explication n'est pas suffisante, précise alors où tu as un problème avec code à l'appui si possible.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Je vais essayer d'être plus clair.
    Pour commencer j'ai créer un formulaire que j'ai appelé MainForm.
    Ensuite dans le même projet, j'ai créer un Contrôle Utlisateur que j'ai appelé TableTreeList, et composé entre autre d'un treeView.
    Une fois créer, ce contrôle utilisateur est apparu dans ma boite à outils du MainForm, J'ai donc fait un Drag and Drop de mon contrôle sur le MainForm.
    Mon contrôle utilisateur apparait donc sur mon MainForm, mais comme un seul élément.
    J'essaye donc, depuis le code du MainForm, de remplir le TreeView qui est dans mon contrôle utilisateur.

  8. #8
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Ce n'est pas à la Mainform de remplir le Treeview mais au UserControl (sinon à quoi sert le UserControl ?).
    Comme je le disais dans mon précédent message, la MainForm passe les informations nécessaires à cette construction au UserControl (via une méthode ou une propriété du UserControl) et le UserControl pourra alors construire le TreeView.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    C'est ça ma question, comment puis je faire pour envoyer les infos dont j'ai besoin depuis mon MainForm vers le UserControl ?

  10. #10
    Membre expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Points : 3 570
    Points
    3 570
    Par défaut
    Re,

    ce que tu peux faire c'est une propriété pour accéder/modifier l'attribut "dico" de ton contrôle utilisateur.
    Ça pourrait donner un truc du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public partial class MonControl : UserControl {
        private Dictionary<string, List<string>> _dico;
        public Dictionary<string, List<string>> Dico {
            get { return this._dico; }
            set {
                this._dico = value;
                // le code de remplissage du TreeView
            }
        }
    }
    Plus je connais de langages, plus j'aime le C.

  11. #11
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Comme je l'indiquais, tu peux par exemple faire une méthode public dans le UserControl qui attend en paramère le Dictionary qui permettra de remplir le Treeview. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public void InitTreeView(Dictionary<String, List<String>> myDico)
    {
      ...
    }
    Cette méthode pourra être appélée depuis la Mainform par exemple.

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Dans le UserControl j'ai :

    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
     public TableTreeList()
            {
                InitializeComponent();
            }
            #region Déclarations
            public IDictionary<string, string[]> UserFields {
                get { return UserFields; }
                set { UserFields = value; } 
            }
     
            public string Source
            {
                get { return Origine.Text; }
                set { Origine.Text = value; }
            }
     
            public IDataSource DataSource
            {
                get { return DataSource; }
                set { DataSource = value; }
            }
     
            #endregion
            public void setValeurControl(IDictionary<string, string[]> userFields, string source, IDataSource dataSource)
            {
                this.UserFields = userFields;
                this.Source = source;
                this.DataSource = dataSource;
            }
    Et dans le MainForm je fait :
    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
    public IDataSource DataSourceSource { get; set; }
     
            public MainForm()
            {
                InitializeComponent();
                Connect();
            }
     
            private void Connect()
            {
                using (LoginForm loginForm = new LoginForm())
                {
                    loginForm.ShowDialog();
                    DataSourceSource = loginForm.DataSourceSource;
                    DataSourceDestination = loginForm.DataSourceDestination;
                }
                IDictionary<string, string[]> userFieldsSource = GetUserFields(DataSourceSource);
     
                tableTreeListGauche.setValeurControl(userFieldsSource, "Source", DataSourceSource);
                tableTreeListGauche.setVal();
    Mais quand je fais ca j'ai une erreur sur le set de UserFields dans le UserControl qui est la suivante :
    "Une exception non gérée du type 'System.StackOverflowException' s'est produite dans Compare.exe"

  13. #13
    Membre expérimenté
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Points : 1 745
    Points
    1 745
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public IDictionary<string, string[]> UserFields {
    get { return UserFields; }
    set { UserFields = value; } 
    }
    C'est là que ça ne va pas ! Le setter de la propriété affectes la propriété qui affecte la propriété qui affecte la propriété qui .....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    private IDictionary<string, string[]> _UserFields;
    public IDictionary<string, string[]> UserFields {
    get { return _UserFields; }
    set { _UserFields = value; } 
    }
    Idem pour la propriété DataSource d'ailleurs...

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2015
    Messages
    65
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2015
    Messages : 65
    Points : 35
    Points
    35
    Par défaut
    Evidemment, quel idiot je suis aha
    Merci beaucoup pour votre aide !

Discussions similaires

  1. [Glade]remplir une Treeview
    Par Poutchjay dans le forum GTK+ avec Python
    Réponses: 2
    Dernier message: 23/01/2006, 09h59
  2. [VB]Gérer la liaison entre controle utilisateur et form
    Par Ooly2001 dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 23/01/2006, 09h50
  3. Réponses: 4
    Dernier message: 17/01/2006, 09h49
  4. Réponses: 68
    Dernier message: 30/11/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo