none
Seleccionar fila de DataGridView con Enter y enviar registro a TextBox RRS feed

  • Pregunta

  • Hola

    Después de algunos intentos, no logro seleccionar con la tecla Enter un registro del DataGridView para a su vez, poder enviarlo a cajas de texto.

    Este proceso ya lo he hecho dando clic sobre la fila y no he tenido ningún problema; ahora que ocupo hacerlo dando Enter, simplemente no me funciona, no ocurre nada, el registro no se muestra en los Text Box.

    Muestro mi código para que puedan decirme qué me falta.

    Este código lo tengo en el evento KeyDown del DataGrid.

    Private Sub DataGridView1_KeyDown(sender As Object, e As KeyEventArgs) Handles DataGridView1.KeyDown
            Dim fila As Integer
            fila = DataGridView1.CurrentRow.Index
            If e.KeyCode = Keys.Enter Then
                e.SuppressKeyPress = True
                UsuariosAdmon.TextBox1.Text = Me.DataGridView1.Item(0, fila).Value
                UsuariosAdmon.TextEdit3.Text = Me.DataGridView1.Item(1, fila).Value
                Me.Close()
            End If
        End Sub

    Agradezco sus respuestas, saludos.

    Estoy usando VS 2015 Enterprise

    lunes, 11 de junio de 2018 18:03

Respuestas

  • "Zarpis" escribió:

    > Después de algunos intentos, no logro seleccionar con la tecla Enter un registro
    > del DataGridView para a su vez, poder enviarlo a cajas de texto.
    >
    > Muestro mi código para que puedan decirme qué me falta.
    >
    > Este código lo tengo en el evento KeyDown del DataGrid.

    Hola:

    Yo te aconsejaría que te olvidaras del evento KeyDown del control DataGridView y que detectaras si se ha pulsado la tecla Enter en el método ProcessCmdKey de ese formulario.

    Si deseas hacer una prueba, inserta en el formulario el siguiente método:

        Protected Overrides Function ProcessCmdKey(ByRef msg As Message, keyData As Keys) As Boolean
    
            If (TypeOf Me.ActiveControl Is DataGridView) Then
    
                Dim fila As DataGridViewRow = DataGridView1.CurrentRow
    
                If ((Not fila Is Nothing) AndAlso (keyData = Keys.Enter)) Then
                    UsuariosAdmon.TextBox1.Text = fila.Cells(0).Value.ToString()
                    UsuariosAdmon.TextEdit3.Text = fila.Cells(1).Value.ToString()
                    Me.Close()
                End If
    
            End If
    
            Return MyBase.ProcessCmdKey(msg, keyData)
    
        End Function
    

    No obstante, si continuas queriendo utilizar el método KeyDown del control DataGridView, mejor será que primero te leas el contenido del siguiente artículo:

    Cómo detectar la tecla pulsada en una celda del control DataGridView

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    miércoles, 13 de junio de 2018 14:46
    Moderador