I am having trouble with a DataGridView. I have a collection of 3 Items bound to the grid, when trying to delete one of the items and reload the grid.
If have code of
If (dlg.ShowDialog() = DialogResult.OK) Then
'Show dialog with grid on it
End If
On the opened dialog, I delete an item from the grid (which should in turn, delete the item from the collection, and re-load the grid), and it returns to the "If (dlg.show..." line, with the error of
"A first chance exception of type 'System.IndexOutOfRangeException' occurred in System.Windows.Forms.dll
Additional information: Index 2 does not have a value. "
(I have break into debugger set on for common language runtime errors)
I can understand this error if i were trying to access any cells, row or columns, but im not, and then I would expect the exception to stop on the line of code that is trying to access this grid data, not the "If (dlg.ShowDialog()... " line
Any ideas? Cheers
I have discovered that if you add in
DataGridView.DataSource = Nothing
DataGridView.Refresh()
before resetting the grid to the collection (with the deleted item removed)
DataGridView.DataSource = MyCollection
It works like a charm. Still interested as to why you have to do this.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With