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 :

[C#] Ajouter dans un tableau d'objet


Sujet :

Windows Forms

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut [C#] Ajouter dans un tableau d'objet
    Salut,
    j'ai un problème de compréhension envers les tableaux d'objets. J'ai une classe Contact et j'aimerais mettre cette classe dans un tableau pour pouvoir le lister dans un listview par la suite. Je lis dans un document XML:

    Code C# : 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
    30
    31
    32
     private void Form1_Load(object sender, EventArgs e)
            {   
                CContact oContact = new oContact();
                CTelephones oTel = new oTel();
                XmlTextReader filexml = new XmlTextReader("D:\\contact.xml");
                while (filexml.Read())
                {
     
                    if (filexml.LocalName == "nom") //Ici on choisit l’élément à partir duquel on veut commencer le traitement.
                    {
     
                        oContact.Nom = filexml.ReadString();
     
                        filexml.Read();
     
                        oContact.Prenom = filexml.ReadString();
     
                        filexml.Read();
     
                        oTel.TelBureau = filexml.ReadString();
     
                        filexml.Read();
     
                        // PERDU
                        listView1.add(oContact); // Contacts étant un tableau de contacts.
     
                    }
     
                }
     
                filexml.Close();
            }
    Voilà un peu l'arboresence lorsque je lit mais je suis PERDU de toute façons. Donc dois-je changer quelque chose dans ma classe CONTACT ou dois-je faire autre chose. Si vous pourriez m'orienter cela m'aiderais bcp!

    Merci

    Thom

  2. #2
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Salut,

    Est-ce que tu as pensé à remplir la TreeView Directement du ficher XML ?

    How to populate a TreeView control with XML data in Visual C# 2005 or in Visual C# .NET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Voilà une bonne idée, mais j'aurais vraiment aimé savoir comment fonctionne un tableau d'objet, car cela me donnerais un peu plus de flexibilité pour pouvoir manipuler mes données, je crois...

    Merci
    Thom

  4. #4
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par thomfort
    Voilà une bonne idée, mais j'aurais vraiment aimé savoir comment fonctionne un tableau d'objet, car cela me donnerais un peu plus de flexibilité pour pouvoir manipuler mes données, je crois...
    De toute facon je t'ai filé un mauvais lien, j'ai lu rapidement je croyais que tu parlais de la treeview

    Bon quelques questions

    Elle est ou la définition de la classe Contact
    Comment tu rempli le tableau

    mais je suis PERDU de toute façons
    T'es pas perdu, t'es ici sur DVP Qu'est ce qu tu veux dire par perdu ?

    Franchement je vois pas le rapport entre ton probleme et le code que tu as soumis.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut,

    bon c'est effectivement vrai le code a franchement pas rapport avec mon post. Ensuite, j'ai un classe CContact en c# dans mon fichier contact.cs

    Code C# : 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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    using System;
    using System.Collections.Generic;
    using System.Text;
     
    namespace ProjetFinal
    {
        class CContact
        {
            private String contactNom;
            private String contactPrenom;
            public CTelephones contactTels;
     
            public CContact()
            {
                contactTels = new CTelephones();//default constructor
            }
     
            public String Nom
            {
                get
                {
                    return contactNom;
                }
                set
                {
                    contactNom = value;
                }
            }
            public String Prenom
            {
                get
                {
                    return contactPrenom;
                }
                set
                {
                    contactPrenom = value;
                }
            }
     
        }
     
    }

    Bon par la suite ma question est là: Comme puis-je me faire un tableau d'objet avec cette classe. J'aimerais pouvoir faire afficher mes donnée dans une listview mais pour cela je dois en premier lieu prendre ce qui est dans mon fichier XML et le mettre dans un tableau pour pouvoir ensuite le faire apparaitre dans mon listview. Mais comme fait on ces manipulations?

    Je suis confu :p

    Merci
    Thom

  6. #6
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par thomfort
    Comme puis-je me faire un tableau d'objet avec cette classe.
    Un tableau de CContact se fait comme ca normalement.

    Code C# : 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
     
    CContact [] MesContacts=new CContact [3];
     
    for(int i=0;i<3;i++)
    {
       MesContacts[i] = new CContact ();
    }
     
    // ensuite tu rempli ton tableau 
    MesContacts[0].contactNom="aaa";
    MesContacts[0].contactPrenom="bbb";
     
    MesContacts[1].contactNom="ccc";
    MesContacts[1].contactPrenom="ddd";
     
    // ainsi de suite

    thomfort, merci de penser Coloration syntaxique sur le forum la prochaine fois

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Salut mehdi_tn,

    Je comprend que tu fais un tableau contenant 3 contacts maximum, mais 2 choses me tracasse:
    1- Pourquoi fais-tu une boucle de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CContact[] = new guitar()
    ;, à sert à quoi?...

    2- Suis-je limité de 3 ou x nombres de contact dans mon tableau ou puis-je allouer dynamiquement mes contacts dans mon tableau tant que j'en ai besoin.

    Merci de ton aide

    Thom

  8. #8
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Par défaut
    bonjour,
    pour le 1) (l'esplication du new guitar() ... je t'avoue que je ne peux pas t"aider je suppose une erreur de copier / coller mais bon)

    pour le 2) dans l'exemple on a :
    CContact [] MesContacts=new CContact [3];
    c'est pour cela que tu es limité a 3 ...
    si tu mets 10000 tu en auras 10000.

    Sinon tu fais une surcharge de la fonction add() (mais bon la c'est un peu plus complexe)

    Perso ce que je te conseille, c'est de faire une ArrayList qui contient tes informations.
    Comme c'est une arraylist tu peux ajouter des valeurs dynamiquement (.Add( ... )) du type que tu veux (en l'occurence de type Ccontact (avec les 3 champs nom,prenom et tel)
    et tu n'as qu'as utiliser le cast pour retrouver tes objets à la sortie

  9. #9
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    désolé code corrigé.

    Sinon si tu ne connais pas à l'avance le nombre d'éléments du tableau utilise dans ce cas les collections.

  10. #10
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Par défaut
    Sans entrer dans les détails, un truc dans le genre :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ArrayList _maListeContact = new ArrayList();
    CContact _monContact = new CContact(Nom, Prenom, contactTels);
    _maListeContact.Add(_monContact);

    Bien évidement, c'est pas si simple (il faut par exemple vérifier que tu n'inseres pas 2 fois le même contact ... )

    Il faut donc dans ta classe CContact redéfinir les opérateurs ==

  11. #11
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Par défaut
    Citation Envoyé par mehdi_tn
    désolé code corrigé.

    Sinon si tu ne connais pas à l'avance le nombre d'éléments du tableau utilise dans ce cas les collections.
    c'est un peu le conseil que je lui donne

  12. #12
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    Citation Envoyé par notalp
    c'est un peu le conseil que je lui donne
    oui mais j'ai tiré plus vite

    Sinon quelle est l'histoire de l'unicité et du ==

  13. #13
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Par défaut
    bah en fait ... si tu ajoutes 2 contact identiques dans ta liste... c pas tres propre... et puis c'est inutile
    donc si tu redefinies l'operateur ==

    tu pourras faire un :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(!mycontact==_mylistedecontact[i])
    {
    mylistedecontact.Add(mycontact);
    }
    c'est juste ca ... mais bon ce que j'en dit moi ...

  14. #14
    Membre Expert
    Avatar de Mehdi Feki
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 113
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 113
    Par défaut
    C'est un reflexe de "C++ien", en C# c'est plutot la méthode equals.
    Ensuite il veut utiliser es tableaux qui eux permettent la duplication.
    En .Net il n'existe pas, malheureusement, de collections qui ne permettent pas la duplication, il faut jouer donc avec les dictionnaires comme la classe KeyedCollection.

  15. #15
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Par défaut
    Dsl ... mauvais reflexe ..

  16. #16
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 93
    Par défaut
    Wow, je suis content que vous ayez pus me conseiller ainsi.

    Mais puisque je cherche tjrs un peu même quand je pose des questions, j'ai pu être capable finalement de mettre tout mes contacts dans un arraylist!!! Effectivement, le arraylist me permettait de pouvoir ajouter des contacts tant que je veux.

    Maintenant, je suis capable de les faires affichers dans une listview(même si ça apparait bizarre) Le dernier pas qu'il me reste à faire est de l'enregistrer dans un fichier XML. En se moment j'enregistre 1 contact a la foi et quand je veux en rajouter un ça écrasse l'autre, mais j'imagine que je peux enregistrer d'un coup mon arraylist dans mon fichier XML...

    Sur ce, je vais tout d'abord faire mes tests et si je trouve pas je posterai pour vous faire part de mon problème.

    Merci en passant pour tout, je suis déjà moins perdu comme je disais au début, même bcp moins perdu.

    Bonne journée
    Thom

  17. #17
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Par défaut
    Heureux de voir que tu as trouvé ...
    Comme je t'ai dis, l'ArrayList te permets en plus de conserver tes objets.

    En revanche si tu as résolu ton probleme pense au [résolu] (outils de conversation)

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD17] Ajouter un objet dans un tableau d'objets
    Par draco951 dans le forum WinDev
    Réponses: 6
    Dernier message: 20/03/2012, 07h54
  2. Réponses: 2
    Dernier message: 21/05/2007, 18h55
  3. Réponses: 6
    Dernier message: 14/12/2006, 17h43
  4. Free dans un tableau d'objets
    Par maredami dans le forum Langage
    Réponses: 3
    Dernier message: 22/03/2006, 16h03

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