listView - InvalidArgument

0

Podczas zaznaczania wartości na listView wyskakuje mi taki błąd: (przy pierwszym zaznaczeniu jest ok)
InvalidArgument=Value of '0' is not valid for 'index'.
Parameter name: index

Oto kod:

private void listKlasyU_SelectedIndexChanged(object sender, EventArgs e) {
  txtIdU.Text = listKlasyU.SelectedItems[0].Text.Remove(0, 2);
}
0

zaden element nie jest zaznaczony wiec listKlasyU.SelectedItems jest puste a co za tym idzie element o indeksie zero nie istnieje.

zrob sobie sprawdzenie ifem czy jakikolwiek element istnieje:

if(listKlasyU.SelectedItems.Any()){
    txtIdU.Text = listKlasyU.SelectedItems[0].Text.Remove(0, 2);
}
0

Nie posiadam funkcji Any()

0

nie rozumiem dlaczego przy pierwszym zaznaczeniu na liście funkcja działa poprawnie, a za drugim razem już nie.

0

Za każdym razem kiedy klikasz w item w listView wywoływany jest event IndexChanged. Pierwsze zaznaczenie powoduje dodanie elementu do SelectedItems, drugie kliknięcie na inny item powoduje odznaczenie pierwszego (wywołujesz IndexChanged z pustym SelectedItems) i zaznaczenie drugiego (znowu IndexChanged + nowy item)
Popraw na

            if(listKlasyU.SelectedItems.Count > 0)
            {
                txtIdU.Text = listKlasyU.SelectedItems[0].Text.Remove(0, 2);
            }
0

Teraz działa z tym Count. Dzięki wielkie za pomoc i pozostałym za fatygę!

1 użytkowników online, w tym zalogowanych: 0, gości: 1