Mazání všech položek v ListView bez označení   zodpovězená otázka

VB.NET

Zdravím všechny programátory. Narazil jsem na problém.

Můj prográmek má komponentu ListView jako dočasné úložiště dlouhých řetězců, které se postupně plní dle potřeby.

Má to však jeden háček. Pokud chci vymazat všechny položky a načíst jiný soubor, vymažou se pouze asi čtyři položky a nastane chyba.

Můj mazací kód je asi špatně.

For i As Integer = 0 To ListView1.Items.Count - 1
            ListView1.Items.Remove(ListView1.Items(i))
        Next i

Neví někdo kde dělám chybu?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Pokud chcete smazat všechny položky, použijte metodu Clear.

ListView1.Items.Clear()

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

To je ono. Hledal jsem něco jako RemoveAll. Nenapadlo mě, že by to mohl být Clear.

Děkuji mnohokrát za pomoc.

Pavel

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Na mazání již bylo odpovězeno, takže jen k chybě...

Při volání Remove() zároveň nastavujete vlastnost Count, takže v každém cyklu její hodnotu snižujete.

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No jo, ale chybu mi to hlásí už u páté položky.

Pavel

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Prosím označit za vyřešeno.

Pomohl mi pan Linhart.

Děkuji

nahlásit spamnahlásit spam 0 odpovědětodpovědět

No protože jich tam máte třeba 10, takže Count - 1 je 9 a smažete první (s indexem 0), čímž se Count sníží od jednu a Count - 1 je 8. Celá kolekce se posune.

Smažete druhou položku (s indexem 1), Count se sníží atd. Až dojdete k položce s indexem 4, Count - 1 je taky 4, a na další to už spadne.

Pokud byste to chtěl dělat takto (v tomhle komkrétním případě máme Clear, ale to nemusí být vždy použitelné (třeba když chceme smazat jen některé položky), musel byste je buď mazat odzadu (což bude rychlejší, protože kolekce se nemusí posouvat), anebo mazat pořád položku na pozici 0 (po jejím smazání se vám tam posune položka, která byla na pozici 1).

Pokud na to ale máme funkce, je dobré je použít. Psát si to sám je leda tak dobré cvičení.

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback