Cerca e rimuovi l'elemento dalla casella di riepilogo
Domanda
Esiste un modo per rimuovere un elemento da una casella di riepilogo basato su una stringa?
Gioco da alcuni minuti ed ecco quello che ho fatto finora ma non funziona
foreach(string file in LB_upload.Items)
{
ftp.Upload(file);
int x = LB_upload.Items.IndexOf(file);
LB_upload.Items.RemoveAt(x);
}
Potrei semplicemente passare in rassegna ogni elemento ma volevo fare qualcosa di un po 'più elegante
Soluzione
while(LB_upload.Items.Count > 0)
{
ftp.Upload(LB_upload.Items[0].ToString());
LB_upload.Items.RemoveAt(0);
}
Altri suggerimenti
Sulla base del tuo esempio, farei qualcosa del genere;
foreach(string file in LB_upload.Items)
{
ftp.Upload(file);
}
LB_upload.Items.Clear();
Il problema che probabilmente stai riscontrando è che stai modificando l'elenco mentre stai itando su questo. Questo è un grande no-no, ed è stato coperto fino alla nausea su questo sito.
In base al titolo della tua domanda sembra che tu non voglia rimuovere ogni elemento, solo alcuni di essi. In tal caso:
for (int i = LB_upload.Items.Count - 1; i >= 0; i--)
{
if (somecondition)
{
ftp.Upload(LB_upload.Items[i]);
LB_upload.Items.RemoveAt(i);
}
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow