Peguei um problema essa semana um pouco estranha. Criei um Windows Forms e nele adicionei um DataGridView e para fazer o DataSource do mesmo usei um List<MinhaClasse>. Até ai perfeito, o DataGridView populava os dados na tela e conseguia manipulá-los normalmente, porém, quando alguma célula ou linha era mudada de foco, era apresentado uma exception:
System.IndexOutOfRangeException was unhandled. Index -1 does not have a value.
Para resolver esse problema, após algumas consultas no Google, foi indicado a trocar o DataSource do DataGridView, ao invés de usar o List<MinhaClasse> usar o BindingSource.
Primeiro você arrasta o componente para o seu Windows Forms (Toolbox > Data > BindingSource) e o código ficou assim:
meuDataSource.DataSource = minhaListaGenerica; meuDataGridView.DataSource = meuDataSource; meuDataSource.ResetBindings(true);
Não aconteceu mais a exception.
Espero que possa ajudar…
Até a próxima…