若行过多会有滚动条出现,此时删除一些行后,前面的几行就会变成空白。但是如果是删除一行或者删除的几行是从第一行开始删除的就不会有问题,还有就是如果行数不太多,不足以产生滚动条的时候,就不会出现空白的问题。
    网上提到过的用Arrang(),update()的方法已经用过了,没有作用。另外和网上别人由采用setcolumnwidth()在onsize里引起的问题几乎一模一样,但是他没有提供方法。

解决方案 »

  1.   

    看网上说是把onsize()里的函数setcolumnwidth()另开一个线程去做,就能解决。但是我不知道是什么原因导致的,想知道原因,再说开线程似乎也有点过于复杂。
      

  2.   

    在删除行前禁止窗口重绘,删除结束后再重绘,能解决你的问题
    SetRedraw(FALSE)
     //删除项目...
    SetRedraw(TRUE)
      

  3.   

    回复 2楼
           删除是用链表删除的获取要删除的行的索引,然后进行删除,应该不会存在这个问题了。
        而且我在onsize()函数的setcolumnwidth函数前后加了setredraw()会改善显示的效果,我觉得应该就是setcolumnwidth()引起的。
        再而且,我在vista下运行这个软件,会出现行被隐藏了的问题,本来开发使用的xp sp3,另外兼容性和管理员权限均已打开。但是我看vista选择兼容性的时候只能选择xp sp2。
      

  4.   


    while(m_list.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED) != -1)
    {
    int nItem = m_list.GetNextItem(-1,LVNI_ALL | LVNI_SELECTED);
    m_list.DeleteItem(nItem);
    }
    m_list.RedrawItems(0, m_list.GetItemCount()-1);删除单行或多行都可以,控件我重载了drawitem函数,重画一下应该可以,我的问题解决了,不知道对你有没有帮助。m_list是ListCtrl。