0

我正在使用一个列表视图(listView1),当我将数据填充到其中时它会闪烁(每秒添加 10 行)。

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

请给我一步一步的指示。我是 C# 的新手。

4

2 回答 2

0

这里的一种选择是仅更新 listview 数据源,这样您就不会直接访问您的控件,而只能访问底层数据源。

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

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

最后,每秒 100 个列表视图项目很多,您需要在列表视图中有这么多项目吗?我建议将此列表过滤为您当时需要的项目,这将使其表现更好。

于 2013-11-15T11:36:29.953 回答
0

在每秒 100 行的情况下,您将需要双缓冲和虚拟模式。

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

您应该认真考虑使用ObjectListView,它是围绕 .NET ListView 的开源包装器,可以解决很多问题,因此您不必这样做。

于 2013-11-17T23:28:57.660 回答