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 :

ArrayList en paramètre à une autre Form


Sujet :

Windows Forms

  1. #1
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut ArrayList en paramètre à une autre Form
    Bonjour à tous,

    En voici une probablement facile pour les experts que vous êtes..

    Je voudrais passer en paramètres à une seconde Form la liste des CheckedItems provenant d'un CheckedListBox.

    Les Items de cette CheckedListBox sont définis par un type non standard qui contient 2 strings (LbItem) comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ArrayList TagList = new ArrayList();
    foreach (DataRow row in matable.Rows)
    {
        TagList.Add(new LbItem(row[0].ToString(), row[1].ToString()));
    }
    chklb_tagname.DataSource = TagList;
    chklb_tagname.DisplayMember = "TagName";

    Dans ma seconde Form, j'ai défini un ArrayList comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public partial class frm_graph : Form
    {
    public ArrayList tag_list = new ArrayList();
    ...
    Lors de l'appel de ma seconde Form, je lance ce code pour créer ma seconde Form et remplir la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    private void btn_externe_graph_Click(object sender, EventArgs e)
            {
                if (chklb_tagname.CheckedItems.Count > 0)
                {
                    frm_graph form_graphique = new frm_graph();
                    //form_graphique.tag_list.AddRange(chklb_tagname.CheckedItems);
                    foreach (LbItem Tag in chklb_tagname.CheckedItems)
                    {
                        form_graphique.tag_list.Add(Tag);
                    }
                    form_graphique.Show();
                }
            }
    cette seconde Form doit faire un foreach des items dans cette liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach (LbItem Tag in tag_list)
                    { ...
    }
    mais le hic c'est que lors de l'exécution de ce foreach, j'obtiens ce message d'erreur :

    L'exception System.InvalidCastException n'a pas été gérée
    Message="Impossible d'effectuer un cast d'un objet de type 'LbItem' en type 'LbItem'."
    j'ai tenté différentes méthodes pour passer cette liste (soit en définissant mon Tag_list comme ceci : public List<LbItem> tag_list = new List<LbItem>();

    mais ca ne compile même pas (erreur sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    form_graphique.tag_list.Add(Tag);
    dans la form1, section de la création du form (voir le 3ieme extrait de code)
    l'erreur est :
    Erreur 1 La méthode surchargée correspondant le mieux à 'System.Collections.Generic.List<WindowsApplication1.frm_graph.LbItem>.Add(WindowsApplication1.frm_graph.LbItem)' possède des arguments non valides
    Je ne sais pas si la définition de mon type LbItem est requise pour la compréhension de mon problème, mais je le fournirai dans un second message si requis.

    Merci de votre aide

  2. #2
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    Citation Envoyé par kdionne Voir le message
    Message="Impossible d'effectuer un cast d'un objet de type 'LbItem' en type 'LbItem'."
    Est-ce que par hasard tu aurais défini deux fois la classe ?
    Combien de fois "class LbItem" est présent dans ton code ?

    Tant que j'y suis, tu as tout intérêt à préférer List<T> à ArrayList. ArrayList servait dans les temps reculés où les generics n'existaient pas, mais n'a plus d'utilité aujourd'hui.
    ಠ_ಠ

  3. #3
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    en effet, j'ai défini LbItem dans chaque form. je vais essayer de changer le nom dans une des 2 pour voir si ca corrige le problème.

    merci de ton assistance

  4. #4
    Membre émérite Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Points : 2 925
    Points
    2 925
    Par défaut
    C'est surtout que tu n'as pas vraiment intérêt à définir des classes à l'intérieur d'autres classes. Ça peut parfois se justifier, mais par défaut, je ne te le recommande pas.
    ಠ_ಠ

  5. #5
    Futur Membre du Club
    Inscrit en
    Novembre 2009
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut résolu
    merci bien

    en sortant ma classe LbItem dans un fichier classe en dehors de mes 2 classes, ca fonctionne très bien!
    Évidemment, je n'utilise plus le type ArrayList, mais bien List<LbItem>

    ca marche

    merci! (je vois que j'ai encore beaucoup à apprendre)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 24/03/2011, 12h21
  2. Réponses: 1
    Dernier message: 13/07/2009, 21h05
  3. Comment insérer une form dans une autre form ?
    Par marsupilami34 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 19/07/2005, 11h15
  4. [C#] Acceder à la méthode d'une autre form
    Par dacid dans le forum Windows Forms
    Réponses: 35
    Dernier message: 23/03/2005, 14h49
  5. Comment basculer le focus depuis une autre form ?
    Par altahir007 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 03/09/2003, 15h54

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