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:
todo funciona perfectamente , excepto cuando el rowindex y columnindex son iguales, ahi se genera este error:'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 Sub
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
Talvez haya otra forma de implementar esto????
Agradeceria cualquier ayuda que me puedan dar, ya que he buscado en internet sin encontrar nada.
Gracias!