我在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
{
}
}
答案 0 :(得分:13)
是的,会发射两次。一次因为先前选择的项目未被选中,再次为新选择的项目。您只需要确保看到选择事件:
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) {
if (e.IsSelected) {
// Update form
//...
}
}
答案 1 :(得分:0)
是的,只需在刷新开始时删除EventHandler,并在刷新完成后再次添加
即
// Remove handler
listView1.ItemSelectionChanged -= new ListViewItemSelectionChangedEventHandler(listView1_ItemSelectionChanged);
// Do refresh
// Add again
listView1.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(listView1_ItemSelectionChanged);
答案 2 :(得分:0)
我认为您需要手动取消选择处理程序末尾的项目。
listView1.SelectedItem = null;
答案 3 :(得分:-1)
试试这个:
private void ItemSelect()
{
if(SelectedItem!=null)
App.Current.MainPage.Navigation.PushAsync(new Pages.TLAccByCurrency(), true);
_selectedItem = null;
}