[Dica] – IndexOutOfRangeException na classe CurrencyManager


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…

, ,

  1. Nenhum comentário ainda.
(não será publicado)