Problema estranho com DataGridViewComBoboxcell, tentando autocomitir mudanças
-
25-09-2019 - |
Pergunta
Portanto, meu objetivo é que, uma vez que um usuário clique no item da lista suspensa, a célula ligará automaticamente para endedit (). O mais estranho é que o código abaixo funcionará nos 2nd-N Comboboxescells, que eu desistirei e selecionará valores, mas nunca o primeiro. Há algo que estou perdendo aqui ??
protected override void OnCellClick(DataGridViewCellEventArgs e)
{
base.OnCellClick(e);
DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
if (control != null)
{
control.DropDownClosed += new EventHandler(control_DropDownClosed);
}
}
void control_DropDownClosed(object sender, EventArgs e)
{
this.EndEdit();
DataGridViewComboBoxEditingControl control = sender as DataGridViewComboBoxEditingControl;
control.DropDownClosed -= new EventHandler(control_DropDownClosed);
}
Deve acrescentar aqui que estou herdando do DataGridView se isso não for óbvio
Solução
Quando algo como "O mais estranho é que o código abaixo funcionará nos 2nd-n Comboxescells de que eu desistirei e selecionará valores, mas nunca o primeiro"Acontece, geralmente porque o evento acontece antes que algo que você precisa seja feito.
Enquanto o seu exemplo, eu diria que a primeira vez, quando você clicar,
DataGridViewComboBoxEditingControl control = this.EditingControl as DataGridViewComboBoxEditingControl;
da-te control == null
.
Talvez você deva mudar o evento escolhido para fazer suas coisas de Click
para SelectedIndexChanged
ou SelectedValueChanged
?
Espero que isto ajude,