Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Beim Auswählen einer zweiten Spalte im ListView kommt eine IndexOutOfRange Exception
GRiva
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

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

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16214

beantworten | zitieren | melden

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ß.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
GRiva
myCSharp.de - Member



Dabei seit:
Beiträge: 2

Themenstarter:

beantworten | zitieren | melden

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
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von GRiva am .
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16214

beantworten | zitieren | melden

"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.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
CoLo
myCSharp.de - Member



Dabei seit:
Beiträge: 232

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers
Anchiko
myCSharp.de - Member



Dabei seit:
Beiträge: 12

beantworten | zitieren | melden

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.
private Nachricht | Beiträge des Benutzers