ListView ItemSelectionChanged срабатывает дважды?
У меня есть приложение Winforms в C# с элементом управления ListView. Этот ListView показывает список дел, и я использую событие ItemSelectionChanged для обработки обновлений.
проблема в том, что событие "ItemSelectionChanged" срабатывает дважды каждый раз, когда я пытаюсь сделать обновление.
событие ItemSelectionChanged обновляет форму для представления обновлений (т. е. удаляет элемент из списка).
есть ли способ отключить событие от запуска после освежиться?
обновление 1:
private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e)
{
if (e.IsSelected)
{
listView1.Items[e.ItemIndex].Remove();
listView1.SelectedIndices.Clear();
listView1.Focus();
listView1.Update();
}
else
{
}
}
4 ответов
Да, он выстрелит дважды. Один раз, поскольку ранее выбранный элемент стал невыбранным, снова для вновь выбранного элемента. Вам просто нужно убедиться, что вы видите событие выбора:
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;
}