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

Windows Forms Discussion :

Acceder a une listbox depuis d'autre form avec une class


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique (Débutant)
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique (Débutant)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 47
    Points
    47
    Par défaut Acceder a une listbox depuis d'autre form avec une class
    Bonjour,

    J'aurais besoin d'un petit coup de main svp

    Enfaite j'ai une form principal "AppliMainForm" ou se trouve une Listbox "listVille" et je voudrais a partir d'une classe que j'ai créée "XMLVille" créer une méthode "ChargementListe" qui me charge ma Listbox avec les élements de mon fichier XML..

    J'arrive a faire le chargement de ma listebox dans le programme principal mais dès que j'essaye avec ma méthode "ChargementListe" elle ne se charge plus..
    J'ai passé ma ListBox en public, je n'ai pas d'erreur de compilation mais elle reste vide...

    voici mon code :

    Méthode ChargelentListe de ma class XMLVilles :

    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
     
    public void ChargementListe()
            {
                AppliMainForm form1;
                form1=new AppliMainForm();
     
                tab = new string[50];
                XmlDocument docVille = new XmlDocument();
                docVille.Load(@".\XMLVilles.xml");
                XmlNodeList listeNoeudsVilles = docVille.GetElementsByTagName("nom");
                foreach (XmlNode node in listeNoeudsVilles)
                {
                    tab[nbVilles] = node.InnerText;
                    nbVilles++;
                }
                form1.listVille.Items.Clear();
                for(int i = 0; i < this.nbVilles; i++)
                {
                    form1.listVille.Items.Add(tab[i]);
                }
            }

    Utilisation de la méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    private void AppliMainForm_Load(object sender, EventArgs e)
            {
                XMLVilles ChL = new XMLVilles();
                ChL.ChargementListe();
            }

    Et je souhaite me servir de cette méthode dans plusieurs form par la suite..
    Merci de votre aide

  2. #2
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Points : 8 538
    Points
    8 538
    Par défaut
    Dans ta méthode ChargementList tu crées une nouvelles Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form1=new AppliMainForm();
    et tu charges la ListBox de cette nouvelle form, pas la ListBox de la form principale...


    Dans ta méthode ChargementListe tu mélanges contrôles graphique et chargement de données. Si tu veux du code réutilisable tu dois séparer tout ça.

    Déjà tu dois créer des classes pour représenter tes données. Par exemple une classe Ville.

    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
        public class Ville
        {
            private string _name ;
     
            public  Ville(string name)
            {
                this._name = name;
            }
     
            public string Name
            {
                get
                {
                    return _name ;
                }
            }
        }
    Ensuite tu crées une classe qui s'occupe de charger les données (villes) et des les renvoyer (liste de villes).

    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
        public class VilleDataAccess
        {   
            public List<Ville> ChargementListeVilles()
            {
                List<Ville> listVilles = new List<Ville>();
                XmlDocument docVille = new XmlDocument();
                docVille.Load(@".\XMLVilles.xml");
                XmlNodeList listeNoeudsVilles = docVille.GetElementsByTagName("nom");
                foreach (XmlNode node in listeNoeudsVilles)
                {
                    Ville ville = new Ville(node.InnerText);
                    listVilles.Add(ville);
                }
                return listVilles;
            }        
        }

    Pour charger la grille tu utilises la propriété DataSource de la Listebox et tu lui donnes la liste de villes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    private void AppliMainForm_Load(object sender, EventArgs e)
    {
        VilleDataAccess villeDataAccess = new VilleDataAccess();
     
        listVille.DataSource = villeDataAccess.ChargementListeVilles();
        listVille.DisplayMember = "Name";
        listVille.ValueMember = "Name";    
    }

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique (Débutant)
    Inscrit en
    Avril 2011
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique (Débutant)
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 45
    Points : 47
    Points
    47
    Par défaut yeahh ;)
    Ah ouiii en effet j'ai pas était doué sur le fait de réinstancié une form.. je comprend!!

    Parcontre j'avais pas vu la réponse alors j'ai réussi a avancé en passant en parametre à ma fonction ChargementListe ma ListBox et cela fonctionne et mon code ne change quasiment pas..
    Mais c'est surement pas la meilleure solution?

    La je vois que tu utilise des accesseurs c'est sa ?
    Je ne connais pas encore cette façon de faire, j'ai du mal a voir un peu la chose mais je vais essayer, sa va m'aidé a progresser

    Parcontre je ne suis pas obligé de recréer une classe ? je peux utiliser celle que j'ai déjà : XMLVilles ?

    Merci beaucoup pour ton aide

Discussions similaires

  1. appel d'une image depuis un autre serveur
    Par isa150183 dans le forum Traitement d'images
    Réponses: 3
    Dernier message: 16/12/2007, 17h08
  2. Réponses: 17
    Dernier message: 12/07/2006, 22h04
  3. Réponses: 3
    Dernier message: 05/06/2006, 21h14
  4. [VB6]Passer une varible dans un autre form
    Par mike292 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 25/04/2006, 16h12
  5. [VB.NET/2.0] Comment MAJ ListBox depuis un autre Thread ?
    Par ShaVo dans le forum Windows Forms
    Réponses: 1
    Dernier message: 12/02/2006, 13h48

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