DataGridView - Index lag außerhalb des Bereichs

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von C.O.D.E.

    DataGridView - Index lag außerhalb des Bereichs

    Hallo,

    bevor ich meine Frage stelle: Ja ich weiß das DataGridView speichert ganz einfach xml-Dateien :)

    Für mein Programm muss ich auf zeilen des DGV zugreifen und sie auslesen. Leider kommt immer ein Fehler wenn ich versuche sie auszulesen.

    Quellcode

    1. System.ArgumentOutOfRangeException: "Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Sammlung sein.Parametername: index"


    VB.NET-Quellcode

    1. Dim CSconfig As New List(Of String)
    2. For i = 1 To dgv_Binds.Rows.Count
    3. CSconfig.Add(dgv_Binds.Rows(1).Cells(i).Value & dgv_Binds.Rows(2).Cells(i).Value)
    4. Next


    Wahrscheinlich wieder was ganz simples, hat jemand Rat? ;/
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!
    Du gehst zu weit. For i = 0 To dgv_Binds.Rows.Count - 1 Wie die meisten Sachen, ist es auch hier so. Es geht bei 0 los. Bei 3 Zeilen hast Du deren Indices 0, 1, 2. Wenn Du aber mit To dgv_Binds.Rows.Count am Ende auf Row(3) zugreifst, knallt's.
    Aber Moment. Dein Code lügt da ein bisschen. Warum gehst Du mit i von 1 bis Rows.Count, obwohl Du die Zellen durchgehst? Unwahrscheinlich, das Du so viele Zellen wie Zeilen hast.
    x
    x
    x
    x
    x
    x
    x
    x
    x
    x
    x
    x
    x
    x
    x

    5 Zeilen mit je 3 Zellen. Deine Schleife greift im Extremfall auf Zelle 5 der 2. Zeile zu. Die gibt es nicht. Falschrum gedacht beim Coden?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    VaporiZed schrieb:

    Falschrum gedacht beim Coden?


    Das werde ich sobald ich auf Arbeit bin überprüfen! Danke schon mal!

    @VaporiZed, du hattest recht. Ich habe die Zeilen vertauscht.

    Die korrekte Lösung lautet:

    VB.NET-Quellcode

    1. For i = 0 To dgv_Binds.Rows.Count - 1
    2. CSconfig.Add(dgv_Binds.Rows(i).Cells(1).Value.ToString & dgv_Binds.Rows(i).Cells(0).Value.ToString)
    3. Next
    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „C.O.D.E“ ()

    So kannst du das auch machen, dann sparst du dir das mit dem Count problem.

    VB.NET-Quellcode

    1. For Each SelectedRow As DataGridViewRow In Me.DataGridView1.Rows
    2. csconfig.add(CStr(SelectedRow.Cells("SpaltenName").Value) & CStr(SelectedRow.Cells("SpaltenName2").Value))
    3. Next
    Werde ich zuhause ausprobieren! Sieht jedenfalls vielversprechend aus!

    *Unnötiges Vollzitat entfernt* ~NoFear23m
    PS: @C.O.D.E wenn du direkt auf einen Post Antwortest musst du nicht unbedingt Zitieren, der Zusammenhang ist in einer direkten antwort leicht zu erkennen. Grüße

    Liebe Grüße,
    C.O.D.E

    Testautomatisierung (TA):

    5%
    Du findest meinen Beitrag Hilfreich? :thumbup: Dann drück auf Hilfreich!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Nofear23m“ ()