none
AYUDA... Saltar textbox al completarlo el texto...? RRS feed

  • Pregunta

  • Hola buenas...

    Tengo 4 textbox en un formulario de Windows; cada uno de estos acepta solo 4 caracteres...

     

    Mi duda es la siguiente:

    De que forma se podria hacer, para que cuando digite el último caracter del primer textbox(que es el cuarto caracter).. el puntero me salte al siguiente textbox.. y asi sucesivamente..

    (Esto es similar a los codigos de licencias que se insertan en los programas de instalación. )

     

    Gracias de antemano..

     


    • Editado Benjamin077 jueves, 29 de diciembre de 2011 17:44 mala ortografia
    jueves, 29 de diciembre de 2011 17:44

Respuestas

  • Has pensado en usar el evento "KeyPress" de los Textbox y hacer una condición, para que cuando se escriban 4 caracteres en un determinado "Textbox" se salte o tome "Focus" el siguiente, seria así:

     

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (textBox1.Text.Length >= 3)
                {
                    textBox2.Focus();
    
    
    
                }
            }
    

     


    Lo que hará el Textbox será que cuando se escriban justamente 4 caracteres en el primer Textbox, el focus sea para el textbox2. Así sucesivamente lo haces con los demás "Textbox".

    Nota: La propiedad "Length" debe ser mayor o igual a tres, ya que el indice comienza en 0, esto es para que salte luego de haber escrito justamente 4 caracteres.


    Saludos desde República Dominicana. :)
    jueves, 29 de diciembre de 2011 18:29
  • Puedes crearte un control propio que use el evento TextChanged:

    using System;
    using System.Windows.Forms;
    
    namespace JnControles.WinForms
    {
        public class TextBoxSaltoAutomatico : TextBox
        {
            protected override void OnTextChanged(EventArgs e)
            {
                base.OnTextChanged(e);
                if (this.TextLength >= this.MaxLength)
                    Parent.SelectNextControl(this, true, true, true, true);
            }
    
        }
    }
    

    De esta manera, puedes comprobar la propiedad MaxLength de manera independiente por control

    • Marcado como respuesta Benjamin077 jueves, 29 de diciembre de 2011 19:10
    jueves, 29 de diciembre de 2011 18:42
  • Hola

    Pues... yo establecería la propiedad MaxLength del textBox en 4... y utilizaria en lugar de keypress el evento textChanged

    si te fijas (pon un breakpoint en el if) cuando se lanza el evento keypress la propiedad lenght va a tener valor 0 (la primera vez) y sospecho que no se debe al indice, la propiedad lenght retorna la cantidad de caracteres totales. Asiq ue lo haria parecido pero en otro evento:

     private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (textBox1.Text.Length == 4)
                {
                    textBox2.Focus();
                }
            }
    
    Saludos...

    ** Mis disculpas si no me supe explicar bien

    • Marcado como respuesta Benjamin077 jueves, 29 de diciembre de 2011 19:10
    jueves, 29 de diciembre de 2011 18:45

Todas las respuestas

  • Has pensado en usar el evento "KeyPress" de los Textbox y hacer una condición, para que cuando se escriban 4 caracteres en un determinado "Textbox" se salte o tome "Focus" el siguiente, seria así:

     

        private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
            {
                if (textBox1.Text.Length >= 3)
                {
                    textBox2.Focus();
    
    
    
                }
            }
    

     


    Lo que hará el Textbox será que cuando se escriban justamente 4 caracteres en el primer Textbox, el focus sea para el textbox2. Así sucesivamente lo haces con los demás "Textbox".

    Nota: La propiedad "Length" debe ser mayor o igual a tres, ya que el indice comienza en 0, esto es para que salte luego de haber escrito justamente 4 caracteres.


    Saludos desde República Dominicana. :)
    jueves, 29 de diciembre de 2011 18:29
  • Puedes crearte un control propio que use el evento TextChanged:

    using System;
    using System.Windows.Forms;
    
    namespace JnControles.WinForms
    {
        public class TextBoxSaltoAutomatico : TextBox
        {
            protected override void OnTextChanged(EventArgs e)
            {
                base.OnTextChanged(e);
                if (this.TextLength >= this.MaxLength)
                    Parent.SelectNextControl(this, true, true, true, true);
            }
    
        }
    }
    

    De esta manera, puedes comprobar la propiedad MaxLength de manera independiente por control

    • Marcado como respuesta Benjamin077 jueves, 29 de diciembre de 2011 19:10
    jueves, 29 de diciembre de 2011 18:42
  • Hola

    Pues... yo establecería la propiedad MaxLength del textBox en 4... y utilizaria en lugar de keypress el evento textChanged

    si te fijas (pon un breakpoint en el if) cuando se lanza el evento keypress la propiedad lenght va a tener valor 0 (la primera vez) y sospecho que no se debe al indice, la propiedad lenght retorna la cantidad de caracteres totales. Asiq ue lo haria parecido pero en otro evento:

     private void textBox1_TextChanged(object sender, EventArgs e)
            {
                if (textBox1.Text.Length == 4)
                {
                    textBox2.Focus();
                }
            }
    
    Saludos...

    ** Mis disculpas si no me supe explicar bien

    • Marcado como respuesta Benjamin077 jueves, 29 de diciembre de 2011 19:10
    jueves, 29 de diciembre de 2011 18:45
  • Si que facil que estaba..

    GRacias

    xD

    jueves, 29 de diciembre de 2011 19:10