Вы можете сделать свой собственный, отложив вызов метода, пока все события ItemSelectionChanged не перестанут срабатывать. Что очень аккуратно сделано с помощью Control.BeginInvoke (). Сделайте так, чтобы это выглядело примерно так:
List<int> afterSelect = new List<int>();
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) {
if (afterSelect.Count == 0) this.BeginInvoke(new Action(() => listView1_AfterSelectionChanged()));
afterSelect.Add(e.ItemIndex);
}
private void listView1_AfterSelectionChanged() {
// Use afterSelect
//..
afterSelect.Clear();
}
Вы можете использовать флаг bool вместо списка <>, если вам не нужно отслеживать, какие элементы были изменены.