Estoy utizando un control DataGridView , que inicialmente muestra los datos en columnas del tipo DataGridViewTextBoxColumn
Tengo una columna que cuando el usuario ingresa a una celda de ésta ,la celda se transforma en un combobox, donde el usuario puede cambiar el valor de esta celda (cuando el usuario sale de esta celda, èsta vuelve a quedar como una del tipo DataGridViewTextBoxCell)
A nivel de codigo seria:
Código:
'Evento que tranforma la celda en una DataGridViewComboBoxCell
Private Sub dgrv_Datos_CellEnter(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgrv_Datos.CellEnter
If e.ColumnIndex <> 3 Then
Return
End If
strtmp = dgrv_Datos.Item(e.ColumnIndex, e.RowIndex).Value.ToString()
Dim combo As New DataGridViewComboBoxCell
combo.DataSource = ds.Tables(0)
combo.DisplayMember = "descripcion"
combo.ValueMember = "Id"
dgrv_Datos.Item(e.ColumnIndex, e.RowIndex) = combo
End Sub
'evento que deja la celda como DataGridViewTextBoxCell
Private Sub dgrv_Datos_CellLeave(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgrv_Datos.CellLeave
If e.ColumnIndex <> 3 Then
Return
End If
Dim celda As New DataGridViewTextBoxCell
celda.Value = strtmp
dgrv_Datos.Item(e.ColumnIndex, e.RowIndex) = celda
End Subtodo funciona perfectamente , excepto cuando el rowindex y columnindex son iguales, ahi se genera este error:
Operation is not valid because it results in a reentrant call to the SetCurrentCellAddressCore function.
y se produce en la linea de codigo donde se trata de convertir la celda actual en un combobox
dgrv_Datos.Item(e.ColumnIndex, e.RowIndex) = combo
Lo que quiero es en la celda de un DataGridView que tenga el foco poner un DataGridViewComboBoxCell
[email protected]