2016-05-06 6 views
0

Ich habe eine Listview, die 7 Spalten hat. Ich möchte Informationen über jede Spalte hinzufügen, aber wenn es den Unterpunkt 2 von der ListView erreicht, bekomme ich einen System.ArgumentOutOfRangeException, obwohl ich diesen Unterpunkt habe.listview- System.ArgumentOutOfRangeException

Irgendeine Idee, warum ich diesen Fehler bekomme? Ich habe versucht, danach zu suchen, aber ich habe keinen ähnlichen Fall gefunden. Diese ist der Teil des Codes, wo ich diesen Fehler:

if (seen == true) 
      listView1.SelectedItems[0].SubItems[2].Tag = "Seen"; 
     else 
      listView1.SelectedItems[0].SubItems[2].Tag = "Not Seen"; 

Antwort

1

Sie wahrscheinlich nicht über alle jene SubItems in jeder Artikel.

Oder vielleicht ist nichts ausgewählt? (Beachten Sie, dass die SelectionChanged Ereignis aufgerufen wird, wenn ein Item ist nicht ausgewählten auch!)

Beachten Sie, dass jeder Item in einem ListView haben seine eigene Nummer von SubItems, egal wie viele Columns Sie erstellt haben . Diese bieten nur einen Platz Anzeige die Daten, nicht die Steckplätze, auf die Sie zugreifen können, ohne SubItems zu erstellen!

Deshalb müssen wir es testen, bevor wir darauf zugreifen! Mit anderen Worten: Die ListView Struktur ist kein 2d-Array, sondern eine gezackte Array!

Dies könnte eine mögliche Kontrolle sein ..:

if (listView1.SelectedItems[0].Count > 0 &&  
    listView1.SelectedItems[0].SubItems.Count > 2) 
    listView1.SelectedItems[0].SubItems[2].Tag = seen ? "Seen" : "Not Seen"; 

..aber Sie Ihren Code besser kennen und auch verlassen Sie sich nicht ein schöneres Art und Weise zu tun, die notwendigen Tests ..

einfach finden auf die Anzahl von SubItems gleich der Anzahl von Columns. Sie sind überhaupt nicht verwandt und entweder kann in jedem Item größer sein!

+0

Ok, ich verstehe jetzt, aber was muss ich ändern, um Zugriff auf diese Unterpunkte zu haben? Denn der Zweck ist, jedes dieser Felder mit Daten zu füllen. Vielen Dank! –

+0

Sie müssen __existieren__, also müssen Sie __create/add__ jeweils erstellen. Aber vielleicht war der Fehler in den 'SelectedItems [0]'? Verwenden Sie den Debugger, um herauszufinden, welcher der beiden Indexer die Ausnahme auslöst! – TaW

Verwandte Themen