我目前在检查和取消选中datagridview中的许多复选框时遇到问题。我已经并行运行它们,但它仍然非常慢,即使将行加载起来也更快...
编辑:问题已解决。 AutoSizeRowsMode
和if (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
非常感谢您的帮助!
答案 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)
问题已解决。 AutoSizeColumnsMode
和AutoSizeRowsMode
放慢了速度!