listView - InvalidArgument

Odpowiedz Nowy wątek
2019-07-10 15:31
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);
}
edytowany 2x, ostatnio: cerrato, 2019-07-10 15:56

Pozostało 580 znaków

2019-07-10 15:59
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);
}
edytowany 1x, ostatnio: cerrato, 2019-07-10 16:02

Pozostało 580 znaków

2019-07-10 18:46
0

Nie posiadam funkcji Any()

DOdaj do usingów System.Linq - Juhas 2019-07-11 10:11

Pozostało 580 znaków

2019-07-10 19:20
0

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

Pozostało 580 znaków

2019-07-10 21:17
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);
            }

Pozostało 580 znaków

2019-07-11 12:46
0

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

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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