在你这一句里面syCk.Items.Remove(syCk.CheckedItems[i].ToString());
就已经把syCk.CheckedItems.Count的数量减一了,比如开始为4,在执行了syCk.Items.Remove(syCk.CheckedItems[i].ToString());
后,syCk.CheckedItems.Count的数量为3了,这就是错误的关键所在

解决方案 »

  1.   

    想了一个比较笨的方法,但可以实现,我自己试过了
    for(int i=0;i<checkedListBox1.CheckedItems.Count;i++)
    {
        checkedListBox2.Items.Add(checkedListBox1.CheckedItems[i].ToString());
    }
    while(checkedListBox1.CheckedItems.Count!=0)
    {
        checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[0].ToString());
    }
      

  2.   

    int j=0;
    for(int i=0;i<syCk.CheckedItems.Count;i++)
    {  
        j++;
        ccCk.Items.Add(syCk.CheckedItems[i].ToString());
        syCk.Items.Remove(syCk.CheckedItems[i].ToString());
        i--;
    }
      

  3.   

    错了,应该是这样:int j=0;
    for(int i=0;i<syCk.CheckedItems.Count;i++)
    {  
        ccCk.Items.Add(syCk.CheckedItems[j].ToString());
        syCk.Items.Remove(syCk.CheckedItems[i].ToString());
        j++;
        i--;
    }