使用CheckBoxes更快地取消选中/检查500多个DataGridViewRows

时间:2018-06-25 01:16:31

标签: c# checkbox datagridview

我目前在检查和取消选中datagridview中的许多复选框时遇到问题。我已经并行运行它们,但它仍然非常慢,即使将行加载起来也更快...

编辑:问题已解决。 AutoSizeRowsModeif (checkBox_all.Checked) { Parallel.ForEach(dataGrid_searchEntryList.Rows.Cast<DataGridViewRow>(), row => { row.Cells[0].Value = true; }); } else { Parallel.ForEach(dataGrid_searchEntryList.Rows.Cast<DataGridViewRow>(), row => { row.Cells[0].Value = false; }); } 导致它变慢!

divs

非常感谢您的帮助!

Picture of the gridview

2 个答案:

答案 0 :(得分:0)

首先,您不能在GUI线程之外访问WinForms控件。因此,您需要消除Parallel个呼叫。

奇怪的是,DataGridView没有BeginUpdate/EndUpdate。但是您可以暂停绘图:

dataGrid_searchEntryList.SuspendDrawing();
//Update multiple cells here
dataGrid_searchEntryList.ResumeDrawing();

这至少可以消除过多的绘制。

值得一提的是,如果这是数据绑定的,那么还有一种更好的方法。但是我想不是因为您正在通过DataGridView本身访问数据。

最后,您的代码可以简化为:

foreach(var row in dataGrid_searchEntryList.Rows.Cast<DataGridViewRow>())
{
    row.Cells[0].Value = checkBox_all.Checked;
}

答案 1 :(得分:0)

问题已解决。 AutoSizeColumnsModeAutoSizeRowsMode放慢了速度!