Ich bekomme eine Anwendungsausnahme
%Vor%jedes Mal, wenn ich versuche, auf DataGridView zu klicken.
Ich erhalte eine Fehlermeldung
{"Index -1 hat keinen Wert."} (SystemIndexOutOfaRange-Ausnahme).
in Zeile
%Vor%und ich kann es nicht debuggen. Bitte helfen Sie mir zu finden, was dieses Problem verursachen kann und wie ich es debuggen kann?
Ich vermute, dass Sie eine Liste, die anfänglich leer ist (oder eine andere Art von Auflistung, die keine Ereignisse mit Listenänderung generiert) an Ihre DataGridView
gebunden haben und dann Elemente zu dieser Liste hinzugefügt haben.
Die Elemente, die Sie hinzufügen, werden auf dem Raster korrekt angezeigt . Wenn Sie jedoch auf eine Zeile klicken, wird diese Ausnahme ausgelöst. Dies liegt daran, dass das zugrundeliegende CurrencyManager
seine aktuelle Zeilenposition als Offset von -1 meldet. Dies wird auch so bleiben, weil die Liste keine Änderungen am Raster meldet.
Sie sollten Ihre Liste nur dann an das Raster binden, wenn sie zu Beginn einige Elemente enthält, oder wenn Sie sie neu binden, wenn Sie sie hinzufügen.
Siehe auch meine Antwort auf diese Frage, die im Wesentlichen das gleiche Problem ist.
Nach Andys Ratschlag habe ich
ersetzt private List<Employee> Employees { get; set; } = new List<Employee>();
_employeesGridView.DataSource = Employees;
mit
private BindingList<Employee> Employees { get; set; } = new BindingList<Employee>();
_employeesGridView.DataSource = Employees;
und das Problem ist verschwunden.
Tags und Links sql c# entity-framework winforms datagridview