2

我目前正在使用 Embarcadero C++ 上的 TListView,对象可能有数千个项目。我想设置一个 CTRL+A 功能,以便一次选择所有项目。我设法做到了,但是,当使用 myListView->SelectAll(); 时,它会为每个项目 (!!!) 触发一个 OnSelectItem 事件,这可能会花费大量时间。我尝试了 BeginUpdate/EndUpdate, Enabled = false 却没有任何结果——即每个项目都会触发 OnSelectItem。即使我设置了一个变量来实现从 OnSelectItem 事件的立即返回,它也需要太多时间。

是否有一个简单的解决方案可以避免在调用 SelectAll() 时触发数千个事件?

感谢您提供任何帮助。

4

1 回答 1

0

如果这是不可能的,我不会感到惊讶,但我想知道为什么对少于 100 000 个项目的 OnSelectItem 调用需要这么多时间......也许你只需要提高 OnSelectItem 管理性能,例如从他们那里返回如果您在 SelectAll 的中间

在一些评论后添加:

是的,TListView 并不适用于这么多项目,我没有看到任何用户滚动那么多行,无论如何,如果你像他们在这篇 Embarcadero 文章中推荐的那样在另一个线程中执行它似乎会快得多

于 2017-06-30T14:13:27.533 回答