Listview ItemSelectionChanged стреляет дважды?

У меня есть Приложение 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
        {

        }

    }
8
задан John M 20 August 2010 в 19:47
поделиться

2 ответа

Да, сработает дважды. Один раз, потому что ранее выбранный элемент стал невыделенным, снова для вновь выбранного элемента. Вам просто нужно убедиться, что вы видите событие выбора:

    private void listView1_ItemSelectionChanged(object sender, ListViewItemSelectionChangedEventArgs e) {
        if (e.IsSelected) {
            // Update form
            //...
        }
    }
13
ответ дан 5 December 2019 в 14:00
поделиться

Да, просто удалите EventHandler в начале обновления и добавьте его снова после завершения обновления

т.е.

// Remove handler
listView1.ItemSelectionChanged -= new ListViewItemSelectionChangedEventHandler(listView1_ItemSelectionChanged);

// Do refresh

// Add again
listView1.ItemSelectionChanged += new ListViewItemSelectionChangedEventHandler(listView1_ItemSelectionChanged);
0
ответ дан 5 December 2019 в 14:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: