[ Ivan.Markovic @ 26.09.2008. 22:10 ] @
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.
[ marko1981 @ 27.09.2008. 01:34 ] @
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]
[ Ivan.Markovic @ 27.09.2008. 13:30 ] @
Da skontao sam to usput, hvala ;)