这不是问题,因为我已经回答了这个问题。但它也可能对其他人有所帮助。
以下是发生的事情:
这应该需要大约30秒。在一台高端电脑上(并向上扩展:1分钟,1000 ......)
原因:
每次删除行时,会触发集合ListChanged事件,这会导致datagridview重新计算自动调整列所需的空间(如果有人对“内部”感兴趣,我附加了一个调用图。
答案 0 :(得分:0)
解决方案:
删除时,禁用ListChangedEvent:
mycollection.RaiseListChangedEvents = false;
// Delete multiple rows
foreach(DataGridViewRow row In dataGridView.SelectedRows) {
dataGridView.Rows.Remove(row);
}
// After that you can re-enable the event:
mycollection.RaiseListChangedEvents = true;
// But you have to call
mycollection.ResetBindings();
//to let the datagridview perform at least one redraw.
同样的任务现在只需要眨眼间