gpt4 book ai didi

C#全选ListBox中的项目——暂停事件处理

转载 作者:太空狗 更新时间:2023-10-30 00:45:11 24 4
gpt4 key购买 nike

参见:ListBox select all items

我有一个列表框,我需要选择所有项目。唯一的问题是,我在 ListBox.SelectIndexChanged 事件上有事件处理程序,它做了一些 CPU 密集型的事情。在此处选择循环中的项目会导致程序在循环的每次迭代中触发 SelectIndexChanged 事件。

我已经将循环包含在 Suspend/ResumeLayout() 中,如下所示:

SuspendLayout();

for (int i = 0; i < listBox.Items.Count; i++)
listBox.SetSelected(i, true);

ResumeLayout();

但它仍然会触发事件并且仍然需要很长时间来更新选择。

可以用一个简单的 bool 标志来解决这个问题,我在开始更新时切换它,但如果有更简洁的方法来解决这个问题,那就太好了。

谢谢。

最佳答案

另一种选择(除了使用 bool 标志之外)是在循环之前注销事件处理程序并在循环之后重新注册。

listBox.SelectIndexChanged -= listBox_selectIndexChanged;

for (int i = 0; i < listBox.Items.Count; i++)
listBox.SetSelected(i, true);

listBox.SelectIndexChanged += listBox_selectIndexChanged;

关于C#全选ListBox中的项目——暂停事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6091803/

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