Listview ItemSelectionChanged发射两次?

我在C#中有一个带有ListView控件的Winforms应用程序。 此ListView显示TO-DO项目列表,我使用’ItemSelectionChanged’事件来处理更新。

问题是’ItemSelectionChanged’事件每次尝试进行更新时都会触发两次。

ItemSelectionChanged事件刷新表单以表示更新(即从列表中删除项目)。

有没有办法在刷新后禁用事件?

UPDATE1:

private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (e.IsSelected) { listView1.Items[e.ItemIndex].Remove(); listView1.SelectedIndices.Clear(); listView1.Focus(); listView1.Update(); } else { } } 

是的,会发射两次。 一次因为先前选择的项目未被选中,再次为新选择的项目。 您只需要确保看到选择事件:

  private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) { if (e.IsSelected) { // Update form //... } } 

是的,只需在刷新开始时删除EventHandler,并在完成刷新后再次添加

 // Remove handler listView1.ItemSelectionChanged -= new ListViewItemSelectionChangedEventHandler(listView1_ItemSelectionChanged); // Do refresh // Add again listView1.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(listView1_ItemSelectionChanged); 

我认为您需要手动取消选择处理程序末尾的项目。

listView1.SelectedItem = null;

试试这个:

 private void ItemSelect() { if(SelectedItem!=null) App.Current.MainPage.Navigation.PushAsync(new Pages.TLAccByCurrency(), true); _selectedItem = null; }