Iva*_*nov 2 delphi freeze delphi-2009
我在我的表单上有一个ListView:TListview,并且,我添加了很多值(大约25k TListViewItem),它工作得非常快,但是当我调用Listview.Clear时,程序冻结.我用调试器检查它,它不会步那条线.
我的问题是:我如何解决我的问题?如果可以在不到一秒的时间内创建这么多项目,为什么删除它们需要永远(我等了5分钟以上)?
Del*_*ics 14
您是否尝试在BeginUpdate/EndUpdate块中封闭对Clear的调用:
listview.Items.BeginUpdate;
try
listview.Items.Clear;
finally
listview.Items.EndUpdate;
end;
Run Code Online (Sandbox Code Playgroud)
添加/删除列表视图中的项目(或各种其他控件,例如列表框)会触发对添加/删除的每个项目的控件的GUI更新.特别是对于列表视图,这可能非常昂贵,对于25,000个项目,开销会很大.
不可否认,5分钟确实听起来过分,但这将是我尝试的第一件事.
我要尝试的第一件事就是用BeginUpdate/EndUpdate将你的调用打包到Clear.
ListView1.Items.BeginUpdate;
ListView1.Clear;
ListView1.Items.EndUpdate;
Run Code Online (Sandbox Code Playgroud)
您是否有任何附加到ListView的事件,并且它们是在清除列表时触发?
| 归档时间: |
|
| 查看次数: |
1704 次 |
| 最近记录: |