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 :

modifier collection d'un foreach


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 230
    Par défaut modifier collection d'un foreach
    Bonjour,

    je fait un foreach sur les groups des items de ma listview .
    Je peux modifier le nombre de groups donc ma collection .

    Mais j'ai un message d'erreur dans mon foreach contenant ma collection

    Comment remedier a ça ?

    Merci

  2. #2
    Membre éprouvé
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Par défaut
    Bonjour

    tu peux nous montrer la capture d'écran de ton message d'erreur ou bien tu nous expliques un peu plus ta problématique car j'arrive pas à comprendre ta demande clairement

    Merci de votre collaboration

    Cdt ,

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Par défaut
    Salut,

    Si tu fais un foreach sur une collection, tu ne peux pas modifier cette collection le temps de la boucle. Tu peux généralement t'en sortir avec un for ou en utilisant une collection temporaire. Tu peux voir un exemple (Tip: Modifying the Collection/Array) en bas de page du lien suivant :
    http://msdn.microsoft.com/en-us/libr...8VS.80%29.aspx

  4. #4
    Membre éprouvé
    Inscrit en
    Octobre 2009
    Messages
    116
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 116
    Par défaut
    Bonjour

    oui tout à fait , on doit attendre que la boucle termine avant d'essayer à insérer des éléments dans notre Collection

    ce que je constate que tu veux faire une chose pareille

    Explique moi bien Stp

    Bien à vous

    Cdt ,

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2005
    Messages : 222
    Par défaut
    Sinon, tu crées une deuxieme collection qui est le résultat du tri de la premiere... Ensuite, tu écrases la première avec la deuxieme...

  6. #6
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    230
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 230
    Par défaut
    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    System.Collections.Generic.List<ListViewGroup> toRemove  = new System.Collections.Generic.List<ListViewGroup> ();
              ListViewGroupCollection[] toNew = new ListViewGroupCollection[this.Groups.Count];
               // ListViewGroupCollection toRemove = null;
               // toRemove = this.Groups;
     
              //  ListViewGroupCollection toNew = new ];
                //toNew = this.Groups;
     
     
     
    /*
                foreach (ListViewGroup groupcuisine in toRemove)
                {
                    this.Groups.Remove(groupcuisine);
                }
                */
     
                foreach (ListViewGroup groupcuisine in this.Groups)
                {
                    //this.listView2.Items.Clear();
                    for (int i90 = 0; i90 < this.Items.Count; i90++)
                    {
                        ListViewGroup testgroup = new ListViewGroup(this.Items[i90].SubItems[5].Text, HorizontalAlignment.Left);
                        if (testgroup != null)
                        {
                            if (testgroup.ToString() == groupcuisine.ToString())
                            {
                                this.Items[i90].Group = groupcuisine;
                                toRemove.Add(groupcuisine);
     
                            }
                            else
                            {
                                //ListViewGroup testgroup = new ListViewGroup(li.SubItems[subItemSelected].Text, HorizontalAlignment.Left);
                                //MessageBox.Show(textBoxDesignation.Text + " a été ajouté correctement à la désignation", "Modification Designation", MessageBoxButtons.OK, MessageBoxIcon.Information);
                                this.Groups.Insert(0, testgroup);
     
                                this.li.Group = testgroup;
                                toRemove.Add(groupcuisine);
     
                            }
                        }
                        else
                        {
                            //ListViewGroup testgroup = new ListViewGroup(li.SubItems[subItemSelected].Text, HorizontalAlignment.Left);
                            //MessageBox.Show(textBoxDesignation.Text + " a été ajouté correctement à la désignation", "Modification Designation", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            this.Groups.Insert(0, testgroup);
     
                            this.li.Group = testgroup;
                            toRemove.Add(groupcuisine);
     
                        }
     
                        foreach (ListViewGroup groupcuisine in toRemove)
                        {
                            this.Groups.Remove(groupcuisine);
                        }
                    }
     
     
                }
    j'ai fais ceci mais je peux pas reprendre la meme variable groupcuisine dans mon deuxieme foreach

  7. #7
    Membre très actif
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2007
    Messages
    871
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2007
    Messages : 871
    Par défaut
    Salut,

    T'es toujours dans le premier foreach...

Discussions similaires

  1. [JSTL] connaitre taille de la collection items du forEach
    Par makohsarah dans le forum Struts 1
    Réponses: 3
    Dernier message: 24/05/2008, 16h58
  2. Modifier une ligne avec layout:collection
    Par imane_bennouna dans le forum Struts 1
    Réponses: 3
    Dernier message: 07/05/2007, 14h47
  3. [C# VS 2005] Collection et boucle foreach
    Par SDragon dans le forum Windows Forms
    Réponses: 3
    Dernier message: 24/07/2006, 19h43
  4. Modifier une collection
    Par Admin dans le forum Access
    Réponses: 1
    Dernier message: 28/09/2005, 12h37
  5. [VB6] Modifier la clé d'un élément d'une collection
    Par Ricou13 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 21/11/2002, 14h49

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