我从文件中读取不低于20万条数据要显示在listview中 速度很慢,有什么办法可以解决吗

时间:2021-04-15 21:49:54
我用 GetListCtrl().InsertItem(.....)
和9条GetListCtrl().SetItemData(....)
向其中插入数据,但是速度很慢 大概要20分钟左右,如果再按照某列排序,机器基本瘫痪。
是不是在InsertItem和SetItemData后,listctrl要刷新屏幕,导致资源浪费,能不能最后统一刷新?
有没有什么办法解决这个问题?
如果不用InsertItem和SetItemData方法还有什么途径插入数据?
请高手指点一二,谢谢!!!

5 个解决方案

#1


最后统一刷新,可以用LockWindowUpdate和UnlockWindowUpdate,来限制你在添加数据过程中界面不刷新。

#2


Using virtual lists:
http://www.codeproject.com/listctrl/virtuallist.asp

#3


20万条数据??
这算自已画已要好久吧?

可以自已写一个CView的派生类.然后自已画,但只画当前显示的内容.

#4


SetRedraw()主要用在当前数据窗口进行大数据量刷新或行滚动时,使用户对刷新过程不可见,缩短响应时间
m_leftTree.SetRedraw(FALSE);
读取完后再设为TRUE,刷新
另外不要Sort

#5


up

#1


最后统一刷新,可以用LockWindowUpdate和UnlockWindowUpdate,来限制你在添加数据过程中界面不刷新。

#2


Using virtual lists:
http://www.codeproject.com/listctrl/virtuallist.asp

#3


20万条数据??
这算自已画已要好久吧?

可以自已写一个CView的派生类.然后自已画,但只画当前显示的内容.

#4


SetRedraw()主要用在当前数据窗口进行大数据量刷新或行滚动时,使用户对刷新过程不可见,缩短响应时间
m_leftTree.SetRedraw(FALSE);
读取完后再设为TRUE,刷新
另外不要Sort

#5


up