我正在尝试处理用户更改列表框中选择的项目(通过更新所选内容的信息),但如果选择范围(使用shift + select),它实际上会触发单独的“ItemSelectionChanged”事件对于已选择/取消选择的每个项目,即如果您选择了100个项目,则会获得100个事件,并且第一次调用事件处理程序时,它似乎无法知道还有更多项目。
在选择/取消选择项目的过程完成之前,有没有办法不回应?
答案 0 :(得分:4)
没有SelectedItemsChanged事件,我猜你的意思是SelectedIndexChanged。你可以做的是利用Control.BeginInvoke()方法。在所有事件被触发后,当UI线程再次空闲时,委托目标开始运行。看起来像这样:
bool listUpdated = false;
private void listView1_SelectedIndexChanged(object sender, EventArgs e) {
if (!listUpdated) {
this.BeginInvoke(new MethodInvoker(updateList));
listUpdated = true;
}
}
private void updateList() {
listUpdated = false;
// etc...
}