datagridview.Rows [i]很慢?

时间:2019-02-23 19:03:34

标签: c# winforms

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

我需要循环所有行以获取未在网格视图中显示的行的几个列单元格的列表。有更快的方法吗?我可以仅循环数据网格视图的数据源吗?不知道在按某些列对网格视图进行排序后,它是否仍然有效。

0 个答案:

没有答案