如何在c#中加倍缓冲区列表视图。 (一步步)

时间:2013-11-15 10:49:13

标签: c# listview doublebuffered

我正在使用listview(listView1),当我将数据填入其中时闪烁(每秒添加10行)。

如何启用双缓冲区属性以使其无闪烁。

请给我一步一步的说明。我是c#的新手。

2 个答案:

答案 0 :(得分:0)

此处的一个选项是仅更新listview数据源,以便您不直接访问控件,只访问基础数据源。

DataTable dt = new DataTable();
//load the Datatable with items from your external hardware connection.
myListView.datasource = dt;

然后你只更新DataTable,而不是控件的项目列表。使用双缓冲,您应该看到所需的效果。

最后,每秒100个listview项目很多,你需要在listview中有这么多项目吗?我建议将此列表仅过滤到您当时需要的项目,这样可以使其表现更好。

答案 1 :(得分:0)

每秒100行,您将需要双缓冲和虚拟模式。

双缓冲需要对ListView进行子类化并设置DoubleBuffered受保护的属性。虚拟模式需要将VirtualSize设置为行数,然后响应RetrieveVirtualItem事件。

你应该认真考虑使用ObjectListView这是一个围绕.NET ListView的开源包装器,它解决了很多问题,所以你没必要这样做。