Hallo zusammen.
Ich lasse meine DGV-Rows bei bestimmten Bedingungen färben. Im Normalfall klappt das, ab und an kommen allerdings (mir unerklärliche) Exceptions bzgl.
Hier mal der Code für's
Spoiler anzeigen
Und hier die Fehlermeldung:

Wie man sieht, befinden sich 4 Rows im DGV, heißt der Index darf maximal "3" betragen. Er kommt aber mit "4" in der Methode an - kann ich mir nicht erklären, weil der
RowIndex im Eventhandler über die
Wie kann ich da elegant eine Prüfung drauf legen, dass mir das Programm nicht abschmiert?
EDIT: Hab die Methode mal wie folgt umgebaut - aber meiner Meinung nach dürfte es eine solche Prüfung gar nicht nötig sein:
Ich lasse meine DGV-Rows bei bestimmten Bedingungen färben. Im Normalfall klappt das, ab und an kommen allerdings (mir unerklärliche) Exceptions bzgl.
RowIndex
.Hier mal der Code für's
RowPrepaint
:VB.NET-Quellcode
- Private Sub dgv_RowPrePaint(sender As Object, e As DataGridViewRowPrePaintEventArgs) Handles dgvMitarbeiterVertrag.RowPrePaint,
- dgvVertrag.RowPrePaint
- 'TODO: Indexfehler - wie umgehen?
- 'System.ArgumentOutOfRangeException: "Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Sammlung sein.
- 'Parametername: index"
- 'erstmal deaktiviert, bis eine Lösung gefunden wurde.
- Select Case True
- Case sender Is dgvMitarbeiterVertrag
- Dim rw = DirectCast(DirectCast(dgvMitarbeiterVertrag.Rows(e.RowIndex).DataBoundItem, DataRowView).Row, MitarbeiterVertragRow)
- dgvMitarbeiterVertrag.ConditionedDgvRowForeColor(e, Not rw.Aktiv)
- Case sender Is dgvVertrag
- Dim rw = DirectCast(DirectCast(dgvVertrag.Rows(e.RowIndex).DataBoundItem, DataRowView).Row, VertragRow)
- dgvMitarbeiterVertrag.ConditionedDgvRowForeColor(e, Not rw.Aktiv)
- End Select
- End Sub
Und hier die Fehlermeldung:
Wie man sieht, befinden sich 4 Rows im DGV, heißt der Index darf maximal "3" betragen. Er kommt aber mit "4" in der Methode an - kann ich mir nicht erklären, weil der
RowIndex im Eventhandler über die
DataGridViewRowPrePaintEventArgs
zur Methode weitergegeben wird. Wie kann denn da ne 4 rauskommen, obwohl der Max-Wert 3 betragen darf?Wie kann ich da elegant eine Prüfung drauf legen, dass mir das Programm nicht abschmiert?
EDIT: Hab die Methode mal wie folgt umgebaut - aber meiner Meinung nach dürfte es eine solche Prüfung gar nicht nötig sein:
VB.NET-Quellcode
"Na, wie ist das Wetter bei dir?"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"
"Caps Lock."
"Hä?"
"Shift ohne Ende!"

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