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; }