如何在用户选择ListView控件中的范围时响应ONCE?

我正在尝试处理用户更改列表框中选择的项目(通过更新有关所选内容的信息),但如果选择范围(使用shift + select),它实际上会为EACH触发一次单独的“ItemSelectionChanged”事件已选择/取消选择的项目,即如果您选择了100个项目,则会获得100个事件,并且第一次调用事件处理程序时,似乎无法知道还有更多事件要发生。

在选择/取消选择项目的过程完成之前,有没有办法不做出回应?

没有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... }