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

有没有一种简单的解决方案来避免在调用SelectAll()时触发数千个事件?

感谢您的任何帮助。

最佳答案

如果不可能的话,这不会令我感到惊讶,但是我想知道为什么调用OnSelectItem花费的时间少于10万个项目...也许您只需要提高OnSelectItem管理性能即可,例如如果您位于SelectAll中间,请从他们那里回来

在一些评论后添加:

是的,TListView并不是要处理那么多项目,无论如何,我看不到任何用户滚动这么多行,如果您在另一个线程like they recommend in this Embarcadero article中执行,似乎会更快

关于c++ - 如何避免TListView触发OnSelectItem事件(C++ Embarcadero),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44848450/

10-13 02:44