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