Windows-Formular Anwendungsausnahme

7

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?

    
Anton 20.12.2010, 21:30
quelle

2 Antworten

20

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.

    
Andy 20.12.2010, 21:38
quelle
0

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.

    
Aleksei Mialkin 31.01.2018 12:05
quelle