Aplicación 5: Usando KeyChar, Pasar foco de un TextBox a otro al presionar Enter


Nos ha pasado muchas veces que al tener un formulario con muchos TextBox tenemos que escribir en uno y luego tomar el mouse y dar clic en el otro TextBox para seguir escribiendo y asi sucesivamente si tenemos más, lo que complica o hace muy tedioso en el uso de la aplicación y por lo tanto necesitamos que al terminar de escribir en un TextBox al presionar una tecla en especifico nos saltemos al otro TextBox sin necesidad de perder el tiempo en tomar el mouse. En este caso se utiliza la tecla ENTER.

Ahora, la pregunta es ¿cómo hacer que eso suceda?

Sencillo, necesitamos trabajar un código que se ejecute al presionar la tecla ENTER, y dicho código lo usaremos en un evento llamado KEYPRESS, pero primero, quienes tenemos un conocimiento a medias de programación, posiblemente podriamos saber qué es, qué significa o para qué sirve el evento “KEYPRESS“. Pero por si no lo sabes:

  • KEYPRESS es un evento que se produce cuando el usuario presiona y suelta  una tecla.

Ahora el código que escribiremos en el evento KEYPRESS  de los TextBox será el siguiente.

 If Asc(e.KeyChar) = 13 Then
            TextBox1.Focus()
        End If

Como sabrás el valor en el codigo ASCII de la pulsación de la tecla ENTER es 13. En el argumento “e” se encuentran todos los eventos, procedimientos y funciones que estan en ejecución, como lo es el “KEYCHAR”, que es la función que se encarga de devolvernos el caracter que ha sido digitado, este caracter es una variable de tipo string, por lo tanto necesitamos usar la función “Asc”, que es la que se encarga de convertir en código ASCII cualquier caraácter que le enviemos a esta función. El “.Focus()” pasa el foco al control que necesitemos, ya sea un TextBox, un Button, RadioButton, etc.

Aca dejo una pequeña aplicación como ejemplo:

 

Las propiedades de los controles quedarán de esta forma

Su codigo es el siguiente:

Public Class Form1
    'txtNombre en el evento KEYPRESS
    Private Sub txtNombre_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtNombre.KeyPress
        If Asc(e.KeyChar) = 13 Then
            txtApellido.Focus()
        End If
    End Sub

    'txtApellido en el Evento KEYPRESS
    Private Sub txtApellido_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtApellido.KeyPress
        If Asc(e.KeyChar) = 13 Then
            txtTelefono.Focus()
        End If
    End Sub

    'txtTelefono en el Evento KEYPRESS
    Private Sub txtTelefono_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTelefono.KeyPress
        If Asc(e.KeyChar) = 13 Then
            txtDireccion.Focus()
        End If
    End Sub

    'txtDireccion en el Evento KEYPRESS

    Private Sub txtDireccion_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtDireccion.KeyPress
        If Asc(e.KeyChar) = 13 Then
            btnIngresar.Focus()
        End If
    End Sub

    'Boton que limpiara todos los textbox y pasa el foco al txtNombre
    Private Sub btnLimpiar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLimpiar.Click
        txtNombre.Text = ""
        txtApellido.Text = ""
        txtTelefono.Text = ""
        txtDireccion.Text = ""
        txtNombre.Focus()
    End Sub

    'Boton para terminar la aplicación
    Private Sub btnSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSalir.Click
        Me.Close()
    End Sub

End Class

Para descargar el ejemplo Clic AQUI

Publicado el 6 junio, 2010 en .Net, Programación, Visual Basic, Windows y etiquetado en , , , , , . Guarda el enlace permanente. 7 comentarios.

  1. Miguel Espinoza

    Muchas gracias…….. por la ayuda del ejemplo me sirvieron de mucha ayuda……..

  2. raulhotnaul.com

    gracias por los codigos o ejemplos me sirvio de mucho y para mi trabajo ya no tengo que hacer tab para ir al siguiente muchas gracias.
    si me podrias poner el codigo de los botones de acceso como por ejemplo solo quisiera presionar f1 y me diera guardar archivo f2 modificar f3 buscar etc te agradeceria muchisimo
    gracias

  3. eso es Facil, para utilizar las teclas F1-F12, tienes que poner este codigo en el evento KeyDown del textbox

    Private Sub TextBox_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox.KeyDown

    If e.KeyCode = Keys.F2 Then
    ‘Tu codigo para guardar, modificar o buscar
    End If

    End Sub

    Solo cambia el Keys.F2 por la tecla que necesites, al escribir Keys. automaticamente te aparecerá la lista de las teclas. Tiene que ser en el KeyDown por que de otra forma no te detectará las pulsaciones de las teclas de Funcion.
    Si vas a realizar una accion, dependiendo de la tecla buscada puedes cambiar el If e.keycode por algo asi

    Select case e.KeyCode

    case Keys.F2

    Case Keys.F3

    End select

  4. buenisimo el ejemplo… mil gracias, justo lo que necesitaba.. :D ;)

  5. Buenas tardes pues a mi no me funciono, me puedes ayudar agarre y copie igual cambien por los campos de mi aplicación, y no dio

    sigue cambiandose con el tab

    tengo que cambiar algo mas

    gracias

  6. me olvide decir que trabajo con visual 2010

  7. y si tengo 50 textbox? tengo que programar 50 eventos keypress? debe haber otra forma

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.