Question

Existe-t-il un moyen de supprimer un élément d'une zone de liste en fonction d'une chaîne?

Je joue depuis quelques minutes et voici ce que j’ai eu jusqu’à présent, mais ça ne marche pas

foreach(string file in LB_upload.Items)
{
    ftp.Upload(file);
    int x = LB_upload.Items.IndexOf(file);
    LB_upload.Items.RemoveAt(x);
}

Je pouvais juste passer en revue chaque article mais je voulais faire quelque chose d'un peu plus élégant

Était-ce utile?

La solution

while(LB_upload.Items.Count > 0)
{
  ftp.Upload(LB_upload.Items[0].ToString());
  LB_upload.Items.RemoveAt(0);
}

Autres conseils

Sur la base de votre exemple, je ferais quelque chose comme:


foreach(string file in LB_upload.Items)
{
  ftp.Upload(file);
}
LB_upload.Items.Clear();

Le problème que vous rencontrez probablement est que vous modifiez la liste en itérant dessus. Ceci est un gros non-non, et a été couvert ad-nauseum sur ce site.

Selon le titre de votre question, il semblerait que vous ne souhaitiez pas supprimer tous les éléments, mais seulement certains d’entre eux. Si tel est le cas:

for (int i = LB_upload.Items.Count - 1; i >= 0; i--)
{
    if (somecondition)
    {
        ftp.Upload(LB_upload.Items[i]);
        LB_upload.Items.RemoveAt(i);
    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top