Laden...

Beim Auswählen einer zweiten Spalte im ListView kommt eine IndexOutOfRange Exception

Erstellt von GRiva vor 4 Jahren Letzter Beitrag vor 3 Jahren 1.720 Views
G
GRiva Themenstarter:in
2 Beiträge seit 2020
vor 4 Jahren
Beim Auswählen einer zweiten Spalte im ListView kommt eine IndexOutOfRange Exception

Hallo zusammen,

ich hoffe ich poste das hier ins richtige Unterforum....

Meine ListView hat 5 Spalten.
Darin lege ich hiermit Daten ab

string[] newEntry = new string[5];
            ListViewItem item;
            newEntry[0] = Convert.ToString(dateTimePicker1.Value);
            newEntry[1] = "";
            newEntry[2] = textBox3.Text;
            newEntry[3] = textBox1.Text;
            newEntry[4] = textBox2.Text;
            item = new ListViewItem(newEntry);
            listView1.Items.Add(item);

Anschließend wähle ich die Zeile im Listview aus, hier sollen die Werte in Textboxen ausgegeben werden. Das mache ich über das SelectedIndexChanged Ereignis der ListView.

textBox4.Text = listView1.SelectedItems[0].SubItems[0].Text;
                textBox6.Text = listView1.SelectedItems[0].SubItems[3].Text;
                textBox7.Text = listView1.SelectedItems[0].SubItems[4].Text;
                textBox8.Text = listView1.SelectedItems[0].SubItems[2].Text;

Egal wie viele Zeilen ich anlege, ich kann immer maximal eine auswählen.
Wenn ich dann eine andere auswähle läuft die Anwendung in einen Crash wegen Index out of Range.

Ich habe schon versucht da online etwas herauszufinden, aber nichts wirklich hilfreiches gefunden.

Ich hoffe hier kann mir jemand helfen.

Liebe Grüße
GRiva

16.806 Beiträge seit 2008
vor 4 Jahren

Aufgrund Deiner Herangehensweise vermute ich, dass Du mit WinForms arbeitest.
Leider hast dazu keine Info gegeben und auch nicht in einem entsprechenden Forenbereich gepostet; daher auf Annahme in WinForms verschoben.

Wenn Du MultiSelect bei Deiner ListView aktiviert hast, solltest Du entsprechend im Array die Mehrfachselektion im Debugging sehen.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?

Verwende daher den Debugger; stupides Try and Error macht kein Spaß.

G
GRiva Themenstarter:in
2 Beiträge seit 2020
vor 4 Jahren

Ja, habe ich vergessen zu sagen.
MultiSelect ist deaktiviert, aktiviert habe ich, dass eine ganze Zeile ausgewählt wird.

Ich fürchte, das kommt auf das gleiche hinaus oder?

EDIT:
Mit FullRowSelect und MultiSelect aus passiert es ebenfalls

16.806 Beiträge seit 2008
vor 4 Jahren

"Passiert auch" was? Die Exception, oder was?

Wie gesagt: verwende den Debugger, und Du siehst was in SelectedItems enthalten ist und worauf Du zugreifen kannst.

C
224 Beiträge seit 2009
vor 4 Jahren

Gehe nicht davon aus, dass listView1.SelectedItems[0] existiert.
Wenn Du nichts auswählst, dürfe spätestens dann listView1.SelectedItems.Count == 0 sein und listView1.SelectedItems[0] würde dann nicht existieren --> Index out of Range.

A
12 Beiträge seit 2020
vor 3 Jahren

Wenn das ausgewählte Element einer ListView geändert wird - wenn vorher schon ein anderes Element ausgewählt wurde - wird zweimal das SelectedIndexChanged-Ereignis aufgerufen.

Das erste Mal ohne das es ein ausgewähltes Element gibt, weshalb Du wahrscheinlich die Exception erhältst. Und dann ein zweites Mal mit dem neu ausgewählten Element.

Prüf das mal im Debugger.