强制ListView在背景中绘制

时间:2020-03-06 14:42:12  来源:igfitidea点击:

我有一个ListView,有时我需要放入大约10000个项目。ListViews不能很好地处理此问题,它们在对项目进行排序和绘制时会锁定几秒钟。如果单独添加项目,则更糟,将其锁定近一分钟。

为了解决这个问题,我想在尝试显示ListView之前先尝试填充它,但是不幸的是它还有其他想法。仅当我打开包含ListView的面板时,它才开始绘制,从而使程序挂起了几秒钟。

关于如何消除这种延迟的任何想法?还是有另一个相对容易使用的组件,它更适合显示大量数据?

解决方案

我们需要使用VirtualMode。

出色地。如果只想在后台加载内容,则可以尝试使用线程填充ListView,这将使表单加载。

我认为如果放置Application.DoEvents();不会得到暂停。当我们加载项目时(允许表单重绘和接收事件)。

for (int ix=0; ix < 10000; ix ++)
{
 listView1.Items.Add(ix.ToString());
 Application.DoEvents();
}

如果我们不了解VirtualMode,我想我的建议很好