Ich verwende VS 2008/C# und binde eine lokale Liste von Hilfsklassen als DataSource für ein DataGridView-Steuerelement. Der Aufruf der Remove() -Methode auf meiner Liste von Hilfsklassen löst das CellFormatting-Ereignis der DataGridView aus, das Sinn macht (ein bisschen).Entfernen der letzten Zeile Databound DataGridView C#
Wenn Sie das DataBoundItem der letzten Zeile im Raster entfernen (solange das Raster mehr als eine Zeile enthält), wird die Zeilenauflistung der DataGridView nicht aktualisiert, bevor dieses Ereignis ausgelöst wird. Daher erhalte ich im CellFormatting-Ereignishandler eine IndexOutOfRangeException, da die Zeilenauflistung zu groß ist.
Ich habe versucht, die Zeile mithilfe der DataGridView.Rows.Remove() -Methode zu entfernen und die Bindung mithilfe einer BindingSource zu verwenden, anstatt die Liste direkt als Datenquelle zu binden.
Ich fand ein paar Verweise auf dieses Vorkommen über Google, aber die Antworten waren entweder nicht verfügbar oder es wurde eine Delete() - Methode für die DataGridView- oder die DataGridView.Rows-Sammlung angegeben, von denen es derzeit keine gibt.
Die Sortierung scheint auch nicht das Problem zu sein, da die Ausführung/Sortierung nicht zum selben Ergebnis führt.
Die einzige Ausnahme zu der "letzten Zeile", die ein Problem für das Entfernen ist, ist, wenn das DataGridView nur eine Zeile enthält - in diesem Fall funktioniert alles gut.
Einstellung auf Null und zurück zur Sammlung gearbeitet. – Pat
Markieren Sie dies als die freigestellte Antwort auf eine verrückte alte Frage. :-) Ich glaube, ich habe den Vorschlag damals erfolglos ausprobiert. Aber es scheint für andere zu funktionieren. –