Saltar entre casillas en un Formulario al presionar la tecla Enter
Fecha: 13/Abr/2006 (11 de Abril 2006)
|
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.
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 SubLa 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 SubDe 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.
Fichero con el código de ejemplo: nelsonc_SaltarConEnter.zip - 5.81 KB
Comprobación MD5: A4841AC17F03192C2C53CFCCA5C3AD90