Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

C# checkedListBox.Items.RemoveAt()

[es] :: .NET :: C# checkedListBox.Items.RemoveAt()

[ Pregleda: 1826 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Ivan.Markovic

Član broj: 97763
Poruke: 330

Sajt: security-net.biz


+19 Profil

icon C# checkedListBox.Items.RemoveAt()26.09.2008. u 22:10 - pre 189 meseci
Koristim ovaj kod (dole) za brisanje chekiranih itema ali mi uvek ostaje jedan neobrisan item:

Code:

for (int i = 0; i <= checkedListBox2.CheckedItems.Count - 1; i++)
{
        checkedListBox2.Items.RemoveAt(i);
}


checkedListBox2.CheckedItems.Count vraca pravi broj itema ...

U cemu je problem ? Hvala.
“If you think you are too small to make a difference, try sleeping with a mosquito.” - Dalai Lama
XIV
 
Odgovor na temu

marko1981
Marko Nikolic
Beograd

Član broj: 123059
Poruke: 144
*.BVCOM.NET.



Profil

icon Re: C# checkedListBox.Items.RemoveAt()27.09.2008. u 01:34 - pre 189 meseci
Code:

while (this.checkedListBox1.CheckedIndices.Count > 0)
{
    this.checkedListBox1.Items.RemoveAt(checkedListBox1.CheckedIndices[0]);
}


Svaki put kada uradis "RemoveAt", broj item-a u checkedListBox1 se smanjuje za 1, a samim tim i indexi selektovanih item-a koji slede ispod, otuda su problemi ovog tipa.


Ako bolje pogledas metodu koji si napisao, ti u stvari brises prvo element sa indeksom 0 (bez obzira da li je checked), pa ti se Count smanjuje za 1, provera prolazi za dovoljno veliki broj checked item-a, pa zatim brises element sa indexom 1 (sto mu dodje item sa indexom 2 pocetnog niza) (opet bez obzira da li je checked), pa...

Sve u svemu, rezultat ove funkcije je nepredvidljiv i direktno zavisi i od broja checked item-a u odnosu na ukupan broj item-a, kao i od pozicija checked item-a, sto znaci da ti mozda nekad, uradi cak i tacno kako treba (ako check-iras dovoljno malo item-a odozgo), nekad moze da ti ostavi jednu gresku (kao sto si primetio), a nekad i da nijedan checked item ne izbaci iz liste (ako checked-ovanih item-a ima dovoljno malo i svi su na dnu liste).

[Ovu poruku je menjao marko1981 dana 27.09.2008. u 03:46 GMT+1]

[Ovu poruku je menjao marko1981 dana 27.09.2008. u 03:51 GMT+1]
 
Odgovor na temu

Ivan.Markovic

Član broj: 97763
Poruke: 330

Sajt: security-net.biz


+19 Profil

icon Re: C# checkedListBox.Items.RemoveAt()27.09.2008. u 13:30 - pre 189 meseci
Da skontao sam to usput, hvala ;)
“If you think you are too small to make a difference, try sleeping with a mosquito.” - Dalai Lama
XIV
 
Odgovor na temu

[es] :: .NET :: C# checkedListBox.Items.RemoveAt()

[ Pregleda: 1826 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.