Ozz*_*zah 4 c# events event-handling winforms
请参阅:ListBox选择所有项目
我有一个ListBox,我需要选择所有项目.唯一的问题是,我在ListBox.SelectIndexChanged事件上有事件处理程序,它会做一些CPU密集型的事情.在循环中选择循环中的项会导致程序在循环的每次迭代中触发SelectIndexChanged事件.
我已将循环包含在Suspend/ResumeLayout()中,如下所示:
SuspendLayout();
for (int i = 0; i < listBox.Items.Count; i++)
listBox.SetSelected(i, true);
ResumeLayout();
Run Code Online (Sandbox Code Playgroud)
但它仍然会触发事件并且仍然需要很长时间来更新选择.
我可以用一个简单的布尔标志解决这个问题,当我开始更新时,我会切换,但是如果有一种更简洁的解决方法,那就太棒了.
谢谢.
另一个选项(除了使用布尔标志)将在循环之前取消注册事件处理程序并在循环之后重新注册.
listBox.SelectIndexChanged -= listBox_selectIndexChanged;
for (int i = 0; i < listBox.Items.Count; i++)
listBox.SetSelected(i, true);
listBox.SelectIndexChanged += listBox_selectIndexChanged;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1428 次 |
| 最近记录: |