为什么我的listctrl 删掉一个item,所有的item都删掉了,这是我的代码
CImageList m_ImageListThumb;
Clistcontrol m_listcontrol;
m_ImageListThumb.Remove(m_SelectedItem); //删掉选中的图片
m_listcontrol.DeleteItem(m_SelectedItem);//删掉包含图片的listitem
m_listcontrol.Invalidate();

解决方案 »

  1.   

    你有没有在外层做什么循环?有没有用到自绘?ListCtrl删除一项后不用Invalidate也可以正常显示。
      

  2.   

    没有外部循环,去掉Invalidate也不行
    我怀疑增加选项的代码也有问题,大家看看
    CImageList   m_ImageListThumb;
    Clistcontrol   m_listcontrol;
    int listindex=m_listcontrol.GetItemCount();  //以长度作为索引
    int imgindex=m_ImageListThumb.GetImageCount();//以长度位索引
    m_listcontrol.InsertItem(listindex, "",imgindex);//添加选项
    m_ImageListThumb.Add(&bitmap,RGB(0,0,0));        //添加图片列表增加似乎没问题,但是如果进行删除操作再增加得时候,就出现增加两个选项,
    再进行增加才正常
      

  3.   

    恩 我也刚发现了 不删除ImageList就不出现问题了 
    为什么呢
      

  4.   

    o o ?

    m_ImageListThumb.Remove(m_SelectedItem);   //删掉选中的图片 
    m_listcontrol.DeleteItem(m_SelectedItem);//删掉包含图片的listitem 
    两行掉转顺序执行之后如何?
      

  5.   

    这样的很容易跟踪的。。CImageList   m_ImageListThumb; 
    Clistcontrol   m_listcontrol; 
    m_ImageListThumb.Remove(m_SelectedItem);   //删掉选中的图片 
    m_listcontrol.DeleteItem(m_SelectedItem);//删掉包含图片的listitem 
    m_listcontrol.Invalidate();在m_listcontrol.DeleteItem(m_SelectedItem);//删掉包含图片的listitem 
    这句中断一个点,然后删除一个看看到这里时候的各项的值,同时看看堆栈就很容易找出原因了如果只是到这里一次就肯定你在别的地方还有删除操作