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 :

Probleme pour supprimer un element d'une liste de collection


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut Probleme pour supprimer un element d'une liste de collection
    Bonjour,

    Je continu mon apprentissage du C#/WPF.

    Je cherche à supprimer un élément d'une liste de collection. Cependant mon programme plante quand je supprime l'élément.
    C'est la manière dont je m'y prend qui doit être mauvaise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach (Pers p in tPers)
                {
                    if (p.Delete)
                        tPers.Remove(p);
                }
    La propriété Delete est un booleen, lorsqu'il est sur true, on supprime et sinon on y touche pas.

    En fait dans mon application, l'utilisateur à le choix de supprimer qui il veut dans une liste (dataGrid lié à la ma liste de collection), il coche les cases de ceux qu'il souhaite supprimer de la liste, et valide en cliquant sur un bouton.

    Donc dans mon cas, on ne peut pas toucher à la liste de collection dans un foreach si j'ai bien compris ? Mais existe il un autre moyen ?

    Merci.

  2. #2
    Membre expert
    Avatar de Pongten
    Homme Profil pro
    IT Analyst & Software Developer
    Inscrit en
    Juin 2002
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : IT Analyst & Software Developer
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 173
    Points : 3 543
    Points
    3 543
    Par défaut
    Il vaut mieux passer par l'indexeur de ta collection (ex : tPers[i]) et une boucle while par exemple.
    Si ton problème a une solution, rien ne sert de t'inquiéter..
    Si il n'en a pas, t'inquiéter ne sert à rien


  3. #3
    Modérateur

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Avril 2007
    Messages
    1 996
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2007
    Messages : 1 996
    Points : 3 102
    Points
    3 102
    Par défaut
    Comme le dit PontGen, tu ne peux pas supprimer un élément d'une liste sur laquelle tu es en train de boucler avec un foreach sans quoi tu modifie l'index de tous les éléments de la liste.
    Il faut donc envisager une autre méthode telle que l'utilisation d'une boucle while.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2007
    Messages
    693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2007
    Messages : 693
    Points : 1 187
    Points
    1 187
    Par défaut
    Bonjour,

    Sinon alternative à la boucle While, le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for(int i = list.Count-1; i>=0;i--)

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    Merci Pongten et calagan99

    Cependant j'éprouve quelque difficultés à boucler sur ma liste. En effet, en C on boucle tant que l'élément suivant existe tel que :
    mais en C# je ne vois pas quoi mettre en condition de boucle

    EDIT : Je regarde la dernière solution

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    402
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 402
    Points : 337
    Points
    337
    Par défaut
    C'est bon j'ai réussi avec le for. Merci ostenhard

    C'est surtout la methode "count" qui m'a bien servi. il me permet de boucler sur n'importe quelle liste du coup

    Encore merci

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

Discussions similaires

  1. [langage] Supprimer un élément dans une liste
    Par myjuna dans le forum Langage
    Réponses: 15
    Dernier message: 06/08/2014, 11h49
  2. Réponses: 13
    Dernier message: 27/07/2011, 11h44
  3. supprimer un element d'une liste à puce
    Par sneb5757 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 22/07/2008, 16h28
  4. Réponses: 12
    Dernier message: 04/03/2007, 11h43
  5. [CSS] largeur fixe pour les elements d'une liste
    Par arnolpourri dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 24/05/2006, 13h25

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