• Miércoles 8 de Mayo de 2024, 23:37

Autor Tema:  ¿Como permitir el foco solo en celdas editables del grid?  (Leído 1818 veces)

venusita

  • Nuevo Miembro
  • *
  • Mensajes: 15
    • Ver Perfil
¿Como permitir el foco solo en celdas editables del grid?
« en: Viernes 24 de Julio de 2009, 00:09 »
0
Hola que tal.. tengo un problema  :no:  ........ tengo mi datagridview donde muestro ciertos datos...... solo ciertos rows son editables (readonly=false) todos los demas son readonly=true.

Al momento de dar enter o tab, como le puedo hacer para que solo permita el foco en las celdas moficables ya que recorre todas las celdas del grid....
Hice un codigo que suma y resta segun sea el caso si funciona, pero al momento de modificar la celda y  dar enter o tab o flecha derecha,siempre se posiciona en el row de abajo..... mi codigo es el siquiente:

'Aqui es donde al terminar de editar la celda y dar enter siempre me pone el foco en la celda de abajo.
Private Sub dgv_res_CellEndEdit(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgv_res.CellEndEdit
        Try
            Dim int As Integer
            Dim inx As Integer

            'Call teclas(13)
            '---------------------------------------------------------------------------------
            'Va sumando la cantidad que el usuario va tecleando en cada numero de la tienda
            '---------------------------------------------------------------------------------
            For inx = 2 To dgv_res.ColumnCount - 3
                If Not IsDBNull(dgv_res.Item(inx, e.RowIndex).Value) Then
                    int += dgv_res.Item(inx, e.RowIndex).Value
                End If
            Next
            dgv_res.Item(dgv_res.ColumnCount - 2, e.RowIndex).Value = int
       Catch ex As Exception
            MsgBox(ex.message, MsgBoxStyle.Critical, "Error")
        End Try
    End Sub


'Este es el codigo por ejemplo para el enter.
                   If dgv_res.CurrentCell.ColumnIndex < dgv_res.ColumnCount - 4 Then
                        'Siguiente columna
                        InMiFil = dgv_res.CurrentCell.RowIndex - 1
                        InMiCol = dgv_res.CurrentCell.ColumnIndex + 1
                    Else
                        InMiCol = 2
                        InMiFil = dgv_res.CurrentCell.RowIndex + 2
                    End If
                    'Posicionar columna
                    If InMiFil < dgv_res.Rows.Count - 1 Then
                        If InMiFil > -1 Then dgv_res.CurrentCell = dgv_res.Rows(InMiFil).Cells(InMiCol)
                    End If


Si el usuario no modiifica la celda y solo se muve entre ellas, si me funcioa el codigo ya lo tengo para las teclas arriba,abajo,deracha,izquierda,enter y tab. Pero si el usuario modifica la celda y da enter o cualquiera de las opciones que mencione no se posiciona en la celda siquiente hacia la derecha.

Alguien sabe de alguna propiedad especifica para solo permitir el foco en celdas editables del grid. Sin necesidad de hacer todo los sumar restar o x.  en la posicion actual que se encuentra la selección.

Ayuda por favorrrrrrrrrr     :brickwall:      :oops: