gpt4 book ai didi

subsonic - 删除绑定(bind)到 datagridview 的集合中的多个项目需要永远

转载 作者:行者123 更新时间:2023-12-02 05:15:30 25 4
gpt4 key购买 nike

这不是问题,因为我已经回答过了。但它也可能对其他人有帮助。

这是发生了什么:

  1. 创建一个带有 Datagridview 的 WinForm 并绑定(bind)一个 Subsonic ...Collection,其中加载了超过 500 个对象
  2. 向数据网格中添加一些列,并使至少一个 autosizemode = fill
  3. 添加删除所有选定列的逻辑(即按下按键 -> 删除)
  4. 标记所有记录并删除它们

这大约需要 30 秒。在高端电脑上(并按比例放大:1 分钟 1000 ...)

原因:

每次删除一行时,都会触发集合 ListChanged 事件,这会导致 datagridview 重新计算自动调整列所需的空间(如果有人对“内部结构”感兴趣,我附上了调用图。

最佳答案

解决方法:

删除时,禁用 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.

同样的任务现在只需要眨眼

关于subsonic - 删除绑定(bind)到 datagridview 的集合中的多个项目需要永远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/806605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com