Colaboraciones en el Guille

Saltar entre casillas en un Formulario al presionar la tecla Enter

 

Fecha: 13/Abr/2006 (11 de Abril 2006)
Autor: Nelson Cabezas

 


Muchas veces creamos formularios que aparecen en un pantalla y que para beneficio de nuestros usuarios, utilizamos la opción [TAB], para permitir el salto entre casillas, Sin embargo nunca falta, (por lo menos en mi caso) el usuario un poco mas exigente que quiere recorrer el formulario con un [ENTER]. Esta situación mas que dificultad, me creaba a veces desorden en la estructura de mi código, por lo que busque la forma de simplificar las cosas.

el formulario de prueba

Por ejemplo se desea pasar del TextBox1 al TextBox2 y asi sucesivamente hasta el botón [ingresar] y obviamente que al presionar en este se ingrese la información del formulario.

Bueno continuación sigue código en Visual Basic.NET:

 

Function agregar(ByVal caja As TextBox)
        AddHandler caja.KeyPress, New System.Windows.Forms.KeyPressEventHandler(AddressOf EnterBox)
        End Function

Private Sub EnterBox(ByVal sender As Object, ByVal e As KeyPressEventArgs)
        If e.KeyChar = Convert.ToChar(Keys.Return) Then
            e.Handled = True
            Select Case CType(sender, TextBox).Name
                Case "TextBox1" : TextBox2.Focus()
                Case "TextBox2" : TextBox3.Focus()
                Case "TextBox3" : TextBox4.Focus()
                Case "TextBox4" : TextBox5.Focus()
                Case "TextBox5" : Button1.Focus()
            End Select

        End If
 End Sub

La primera es una función que le dice al VB.NET que agregue el evento EnterBox, a los TextBox que definamos. La segunda es el evento EnterBox, donde recogemos el carácter ingresado al TextBox y que en caso de ser un
[Enter] usemos el parámetro "sender" para averiguar que TextBox genero el evento y actuar en consecuencia.
(con la instrucción CType obtenemos el nombre del TextBox). Ahora como se vería el código completo:

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        agregar(Me.TextBox1)
        agregar(Me.TextBox2)
        agregar(Me.TextBox3)
        agregar(Me.TextBox4)
        agregar(Me.TextBox5)

End Sub

Function agregar(ByVal caja As TextBox)
        AddHandler caja.KeyPress, New System.Windows.Forms.KeyPressEventHandler(AddressOf EnterBox)
End Function

Private Sub EnterBox(ByVal sender As Object, ByVal e As KeyPressEventArgs)
        If e.KeyChar = Convert.ToChar(Keys.Return) Then
            e.Handled = True
            Select Case CType(sender, TextBox).Name
                Case "TextBox1" : TextBox2.Focus()
                Case "TextBox2" : TextBox3.Focus()
                Case "TextBox3" : TextBox4.Focus()
                Case "TextBox4" : TextBox5.Focus()
                Case "TextBox5" : Button1.Focus()
            End Select
        End If
 End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    MsgBox("fin del formulario")
End Sub

De esta manera, solo tenemos que utilizar en el Load del formulario, la función agregar(TextBox) indicando como parámetro todos los TextBox que queramos y en la Funcion EnterBox definir que queremos que suceda cuando
se presione enter dentro de esa casilla.

Viva Chile


Fichero con el código de ejemplo: nelsonc_SaltarConEnter.zip - 5.81 KB

Comprobación MD5: A4841AC17F03192C2C53CFCCA5C3AD90


ir al índice principal del Guille