我正在使用一个列表视图(listView1),当我将数据填充到其中时它会闪烁(每秒添加 10 行)。
如何启用双缓冲区属性以使其无闪烁。
请给我一步一步的指示。我是 C# 的新手。
我正在使用一个列表视图(listView1),当我将数据填充到其中时它会闪烁(每秒添加 10 行)。
如何启用双缓冲区属性以使其无闪烁。
请给我一步一步的指示。我是 C# 的新手。
这里的一种选择是仅更新 listview 数据源,这样您就不会直接访问您的控件,而只能访问底层数据源。
DataTable dt = new DataTable();
//load the Datatable with items from your external hardware connection.
myListView.datasource = dt;
然后您只更新 DataTable,而不是控件的项目列表。使用双缓冲,您应该会看到所需的效果。
最后,每秒 100 个列表视图项目很多,您需要在列表视图中有这么多项目吗?我建议将此列表过滤为您当时需要的项目,这将使其表现更好。
在每秒 100 行的情况下,您将需要双缓冲和虚拟模式。
双缓冲需要继承 ListView 并设置DoubleBuffered
受保护的属性。虚拟模式需要设置VirtualSize
为行数,然后响应RetrieveVirtualItem
事件。
您应该认真考虑使用ObjectListView,它是围绕 .NET ListView 的开源包装器,可以解决很多问题,因此您不必这样做。