Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/06/2006, 10:58
miguel_20042004
 
Fecha de Ingreso: agosto-2004
Mensajes: 23
Antigüedad: 20 años, 5 meses
Puntos: 0
Problema Combobox en DataGridView

Hola a todos!

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 Sub
todo 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




Talvez haya otra forma de implementar esto????

Agradeceria cualquier ayuda que me puedan dar, ya que he buscado en internet sin encontrar nada.

Gracias!