.NET – Corrigindo o erro DataGridViewComboBoxCell Value is not Valid

Se você ainda não esbarrou com este erro, está com sorte.

Quando acontece, é sempre no fechamento do formulário, sendo apresentado inúmeras vezes.

O erro apenas acontece se o autosizemode de uma coluna do tipo datagridviewcombobox estiver definido. Se o autosizemode não for definido, o erro não acontece.

Isso nos leva a duas situações :

O erro pode acontecer quando o autosizemode está definido a nível da DataGridView e existe uma coluna do tipo ComboBox na GridView

O erro pode acontecer quando o autosizemode está definido a nível de coluna e foi definido na coluna do tipo ComboBox

O erro ocorre porque no momento do fechamento do formulário, o formulário realiza primeiramente o dispose do datasource da coluna ComboBox. Quando o datasource é destruido e o autosize está definido, a ComboBox precisa recalcular o seu tamanho, então faz uma requisição por dados que não estão mais lá

Sem dúvida que desligar o autoSizeMode é uma solução, mas não desejamos isso, precisamos do autoSize

No momento em que o formulário for fazer o dispose do datasource da comboboxColumn, a ComboBoxColumn precisa estar com o autosizemode definido como None

Lembre-se que o autosizemode pode ser também definido no nível da grid, dai a diferença entre definir o autoSizeMode como None ou como NotSet

Então no evento form_Closed podemos simplesmente alterar o autosizemode da comboboxcolumn e com isso passaremos a poder utilizar o autoSize enquanto que o erro desaparecerá.

Lembre-se que cada coluna da DataGridView possui um nome e é uma variável acessível por código. Veja como fica :

NomeDaSuaColuna.AutoSizeMode =DataGridViewAutoSizeColumnMode.None;

Fonte: www.bufaloinfo.com.br

Abraços

Tomás Vásquez
www.tomasvasquez.com.br

Comentários

comentários

One thought on “.NET – Corrigindo o erro DataGridViewComboBoxCell Value is not Valid”

Comments are closed.