U stvari, ti si sve na ovoj temi naveo da rešavaju krivi problem (uključujući i mene). Ovo što sam ja primetio sinoć je samo jedna stvar, ali problem je u samom algoritmu koji si postavio.
Možda nije loše da još samo malo komentarišemo..
Kôd:
for (int i = 0; i <= checkedListBox2.CheckedItems.Count - 1; i++)
checkedListBox2.Items.RemoveAt(i);
Zamisli da imamo 10 elemenata u kolekciji i da su 4 elementa štiklirana. Tvoj kod gore (ne obraćamo sad pažnju što RemoveAt uklanja elemente, da bude jednostavnije) otprilike radi sledeće:
1. u kolekciji imamo 10 elementa, 4 su štiklirana
2. pošto su 4 elementa štiklirana, ukloni elemente 1, 2, 3 i 4.
Naravno da je pogrešno: to što imamo 4 čekirana elementa, ne znači da su oni na pozicijama 1-4. Čini mi se da je i tu bio problem.