Почему событие просмотра списка показывает, что отмеченный элемент не отмечен после добавления - PullRequest
7 голосов
/ 22 сентября 2011

Я добавляю элементы в просмотр списка (приложение c # winforms) с помощью следующего кода:

var IT = new ListViewItem(Term);
IT.Checked = true;
MyListView.Items.Add(IT);

Однако сразу после добавления элемента я получаю событие, которое указывает, что элемент не проверен (e.Item.Checked имеет значение false).

Затем я получаю последующее событие, которое указывает, что оно проверено (e.Item.Checked имеет значение true).

Почему я получаю первое событие? При добавлении элемента в список свойство по какой-то причине устанавливается в значение false? Кажется странным, учитывая, что я устанавливаю проверенный статус в true перед добавлением его в мое событие.

Любая помощь с благодарностью. Заранее спасибо.

1 Ответ

15 голосов
/ 22 сентября 2011

Кажется, что когда CheckBox каждого ListViewItem добавляется в ListView, он изначально устанавливается как непроверенный, что вызывает событие ItemChecked.

В вашем случае CheckBox затем устанавливается как проверенный, чтобы соответствовать IT.Checked = true;, который снова запускает событие.

Это, кажется, разработано, и я не думаю, что есть метод остановкиэти события запускаются при загрузке.

Один из обходных путей (хотя и немного хакерский) заключается в проверке свойства FocusedItem объекта ListView, поскольку оно равно нулю до тех пор, пока ListView не будет загружен.и после этого сохраняет ссылку на ListItem.

void listView1_ItemChecked(object sender, ItemCheckedEventArgs e)
{
    if (listView1.FocusedItem != null)
    {
        //Do something
    }
}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...