У меня есть Приложение Winforms в C# с управлением ListView. Этот ListView показывает, что список К - ДЕЛАЕТ объекты, и я использую событие 'ItemSelectionChanged' для обработки обновлений.
Проблема состоит в том, что событие 'ItemSelectionChanged' стреляет дважды каждый раз, когда я пытаюсь сделать обновление.
Событие ItemSelectionChanged refreshs форма, чтобы представить обновления (т.е. удалить объект из списка).
Существует ли способ отключить событие от увольнения после обновления?
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);