Visual Basic.NET - Ayuda please..

 
Vista:

Ayuda please..

Publicado por Jun (1 intervención) el 04/06/2010 20:28:10
Hola.. se que mi problema debe ser bastante fácil de resolver.. el problema es que no se casi nada de .net :(
Resulta que tengo un tabControl dentro del cual tengo muchos textbox, cada textbox solo puede aceptar un caracter, lo que yo quiero es que cuando se digite el caracter .. automaticamente se cambie al siguiente textbox.. y asi sucesivamente.. en cada textbox en el evento TextChanged puse esto:

t = txb_1.Text.ToString.Length
If t = 1 Then
txb_2.Focus()
End If

Realmente si hace lo que quiero, pero si tengo 100 textbox ... no es lo correcto poner 100 veces este codigo... ojala alguien pueda darme una orientacion de como generalizar para que funcione con todos los textbox que yo quiera

de antemano muchas gracias ..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda please..

Publicado por Daniel (11 intervenciones) el 07/06/2010 11:20:23
Hola Jun,

Una solución podría ser la siguiente:

El evento TextChanged va a ser el mismo evento para todos tus textbox, por lo que ese código sólo lo harías una sola vez.

Ahora el problema sería...¿Cómo sabríamos el textbox donde estoy y cual es el siguiente?

La respuesta sería la siguiente: El textbox actual lo tienes con el objeto "sender" del evento que será el textbox. Por último para obtener el siguiente deberías primero establecer los índices de los textbox (Propiedad TabIndex). Así cuando obtengas el TabIndex de tu control actual, le sumas 1 (controlando que no te has pasado ya de textbox) y buscas qué textbox tiene el tabindex calculado (puedes buscarlo mediante la colección Controls de tu tabControl.

Un ejemplo del código puede ser este:

Dim txtActual as TextBox
txtActual = sender

If txtActual.Text.Length = 1 Then
Dim tabIndexSiguiente = txtActual.TabIndex + 1
//controlar que no es el último
//Buscar en Me.TabControl.Controls
Dim txtSiguiente as Textbox = // Textbox devuelto según el tabindex
txtSiguiente.Focus()
End If

Espero haberte ayudado.
Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar