[C# 2.0] geänderte DataGridView-Zeile markieren

lukasS

Erfahrenes Mitglied
Hallo,

ich würde gerne die Zeile mit einer Farbe markieren, in der der Benutzer einen Wert geändert hat.

Problem ist, wenn der Anwender auf den ColumnHeader für die autom. Sortierung (Auf- oder Absteigend) drückt und anschließend der in dieser Spalte einen Wert ändert, lande ich zwar im CellValueChanged-Event, aber das DataGridViewCellEventArgs liefert mir noch die alte ZeilenNr. und ich somit diese nicht farblich kennzeichnen kann.

Ich habe es noch mit CurrentCellDirtyStateChanged probiert, aber sobald ich z. B. die Zeile 4 kennzeichne, die Zeile dann nach der Änderung auf die Zeile 7 springt, bleibt die 4 weiterhin markiert.

Weiß jemand vielleicht eine Lösung für mein Problem?

Danke schonmal!

Gruß

Lukas
 

lukasS

Erfahrenes Mitglied
Hi Nico,

es kann doch aber nicht sein, dass ich nach jedem Ändern prüfen muss, welche Zeile geändert wurde, weil ich alle Informationen darüber verliere. Ich habe gehofft, dass es irgendein Event oder eine Workaround dafür gibt.

Gruß

Lukas
 

Nico Graichen

Erfahrenes Mitglied
Hi

Irgendwie versteh ich nicht, wo jetzt genau dein Problem liegt! :confused:
Über das CellValueChanged-Event erfährst du welche Spalte und Zeile sich geändert hat und kriegst so auch die Zelle wenn du die auch brauchst.

Könntest du den dein Problem bitte nochmal beschreiben? Wie gesagt, ich kan dir nicht folgen :-(
 

lukasS

Erfahrenes Mitglied
Hi,

ok, also, das mit dem CellValueChanged funktioniert ja. Ich habe dann direkt den RowIndex. Aber wenn der Anwender vor dem Ändern eines Wertes auf den Columnheader gedrückt hat um die Spalte sortieren zu lassen (neben der Spaltenüberschrift ist dann ein kleiner Pfeil, je nach dem ob Auf- oder Absteigend sortiert werden soll), ändert dann einen Wert, springt die geänderte Zeile in der Tabelle an die richtige Position (je nach dem ob Ab- oder Aufsteigend sortiert wurde). Leider kriege ich in dem CellValueChanged noch den alten RowIndex.

Wichtig ist hier bei, dass die Sortierung aktiv ist! Ohne die klappt alles wunderbar.

Danke schon mal!

Gruß

Lukas
 

lukasS

Erfahrenes Mitglied
Problem gelöst, der Fehler trat auf, weil die Daten über ein dataSet angehangen wurden. Da ich aber nicht auf das DataSet verzichten kann, musste ich eine Lösung finden.

Das Event CellPainting lieferte hierbei den RowIndex, bevor die Zeile neu einsortiert wurde.

Gruß

Lukas