/ / Dlaczego zdarzenie listview fire wskazuje, że zaznaczony element jest odznaczony po dodaniu - c #, .net, winforms, listview

Dlaczego zdarzenie fireview listview wskazujące, że zaznaczony element nie jest zaznaczony po dodaniu - c #, .net, winforms, listview

Dodaję elementy do aplikacji listview (c # winforms) za pomocą następującego kodu:

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

Jednak natychmiast po dodaniu elementu otrzymuję zdarzenie, które wskazuje, że element nie jest zaznaczony (e.Item.Checked jest false).

Następnie otrzymuję kolejne zdarzenie, które wskazuje, że jest zaznaczone (e.Item.Checked jest true).

Dlaczego otrzymuję pierwsze wydarzenie? Czy sprawdzona właściwość jest ustawiona na false z jakiegoś powodu, gdy dodam element do listy? Wydaje się dziwne, biorąc pod uwagę, że ustawiam sprawdzony status na true przed dodaniem go do mojego wydarzenia.

Każda pomoc bardzo doceniana. Z góry dziękuję.

Odpowiedzi:

14 dla odpowiedzi № 1

Wygląda na to, że kiedy każdy CheckBox ListViewItem jest dodawany do ListView, początkowo jest ustawiony jako niezaznaczony, co powoduje uruchomienie zdarzenia ItemChecked.

W twoim przypadku CheckBox jest następnie ustawiany jako sprawdzony w celu dopasowania IT.Checked = true; który ponownie wystrzelił.

Wydaje się, że jest to z założenia i nie sądzę, aby istniała metoda zatrzymania tych zdarzeń przed wystrzeleniem na obciążenie.

Jednym obejściem (choć trochę hack) byłoby sprawdzenie FocusedItem właściwość ListView, ponieważ jest to wartość null do momentu załadowania ListView i zachowuje tam odniesienie do ListItem.

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

Mam nadzieję że to pomoże.