dgv.Rows[i]
在以下代码中非常慢。
var firstVisible = dgv.FirstDisplayedScrollingRowIndex;
var visibleCount = dgv.DisplayedRowCount(true);
for (var i = 0; i < dgv.Rows.Count; i++) // 20K+ rows, maybe 100K rows
{
var row = dgv.Rows[i];
if (i < firstVisible || i > firstVisible + visibleCount) { AddKeyCellValuesToHashSet(row); }
else { AddKeyCellValueAndDGVRowToDictionary(row); } // visible rows
诊断工具的CPU使用率显示调用的函数为
System.Windows.Forms.DataGridViewRowCollection.get_item(Int32)$#...1669
我需要循环所有行以获取未在网格视图中显示的行的几个列单元格的列表。有更快的方法吗?我可以仅循环数据网格视图的数据源吗?不知道在按某些列对网格视图进行排序后,它是否仍然有效。