none
Como Saltar de TextBox a TextBox siguiente? RRS feed

  • Pregunta

  • Mi pregunta es al no entender demasiado y les agradezco desde ya su colaboracion para capturar cuando el usuario presionar ENTER haga la funcion de TAB (Saltar de TextBox1 a TextBox2 y luego asi en adelante)

    En VB6 usaba el SendKeys y eso, pero aca estoy totalmente desorientado
    Probe con varios ejemplos pero a la hora de hacerlo practico en C# realmente no se como implementarlo.


    Muchas Gracias


    Non Scripted Human
    sábado, 29 de agosto de 2009 5:53

Respuestas

  • correpcion al codigo ya que si presionas cualquier letra avanzara al siguiente objeto

     

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == '\r')
           this.SelectNextControl(this.ActiveControl, true, true, true, true);
    }

    Saludos,

    • Marcado como respuesta Xaphire lunes, 31 de agosto de 2009 20:33
    lunes, 31 de agosto de 2009 19:54
    Moderador
  • hola

    has verificado la asignacion del handler del evento, o sea en las propiedades del control, el rayo amarillo (en el solution explorer), allis e listan los eventos, que tenga uno en el evento KeyPress

    si este no esta asignado no se conecta con el metodo de evento que creaste, por lo tanto nunca se ejecutara

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Xaphire lunes, 31 de agosto de 2009 20:12
    lunes, 31 de agosto de 2009 20:09

Todas las respuestas

  • Hola:

    Pulsas en la barra de herramientas arriba.

    Ver-->Orden de tabulación.

    Eliges el orden cuando veas los cuadraditos con números. También lo puedes hacer en las propiedades TabIndex de cada comopente.

    Saludo.
  • hola

    para usar el enter como tecla para menejrar el foco deberias hacer algo como esto

    Using Enter and Tab Keys to Navigate on a Form

    el ejemplo esta un poco amontonado pero con identacion seria algo asi:


    this.IdTbx.Location = new System.Drawing.Point(72, 32);
    this.IdTbx.Name = "IdTbx";
    this.IdTbx.TabIndex = 1;
    this.IdTbx.Text = "";

    this.IdTbx.KeyDown += new System.Windows.Forms.KeyEventHandler(this.IdTbx_KeyDown);



    private void IdTbx_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if((e.KeyCode==Keys.Enter)||(e.KeyCode==Keys.Tab))
        {
            if (!IdTbx.Text.Equals(""))
            {
                PsswordTbx.Focus();
            }
            else
            {
                CancelBtn.Focus();
            }
        }
    }



    como veras el textbox donde estas parado debes agregarle el evento KeyPress, y ante la presion de ta tacla enter resolvera donde debe ir el foco segun tenga o no datos el text

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    sábado, 29 de agosto de 2009 16:41
  • Hola:

    Pulsas en la barra de herramientas arriba.

    Ver-->Orden de tabulación.

    Eliges el orden cuando veas los cuadraditos con números. También lo puedes hacer en las propiedades TabIndex de cada comopente.

    Saludo.
     EXCELENTE!, La verdad desconocia esa opcion, pero la verdad, no necesito saber el Indice de Tab (TabIndex) (De mas esta decir que tu aporte para mi, fue grande, pero no cumple con lo que realmente pregunto.

    Una vez mas muchisimas gracias, de verdad que a futuro conocimiento, me va a servir en sobremanera.


    Non Scripted Human
    sábado, 29 de agosto de 2009 21:03
  • Me pregunto que framework estas utilizando, en el .net 3.5 puedes hacer uso del método PredictFocus(FocusNavitagionDirection.Next) como se ve en esta referencia.
    http://msdn.microsoft.com/en-us/library/system.windows.frameworkelement.predictfocus.aspx


    Microsoft Certified Technology Specialist .NET 3.5 WPF Application Development
    Profesionista Microsoft VIP México
    Blog Técnico
    World Wide Finalist Imagine Cup 2007
    Microsoft Student Partner
    C#, WPF, WCF
    LinkedIn
    domingo, 30 de agosto de 2009 16:08
  • lo puedes hacer desde el mismo formulario.

    el formulario tiene una propiedad KeyPreview por default es false, cambiala a true y luego desde el evento KeyPress del formulario solo coloca este codigo


    private
    void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        this.SelectNextControl(this.ActiveControl, true, true, true, true);
    }

    solo es un ejemplo simple de como funciona... tendras que adaptarlo segun vaya siendo tu necesidad

    espero te ayude...

    lunes, 31 de agosto de 2009 19:49
    Moderador
  • correpcion al codigo ya que si presionas cualquier letra avanzara al siguiente objeto

     

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == '\r')
           this.SelectNextControl(this.ActiveControl, true, true, true, true);
    }

    Saludos,

    • Marcado como respuesta Xaphire lunes, 31 de agosto de 2009 20:33
    lunes, 31 de agosto de 2009 19:54
    Moderador
  • Hola Marvin, gracias por tu respuesta, ahora basicamente estoy medio perdido con el tema como capturar el cuando el usuario presiona la tecla ENTER para  que por medio de Sendkey (no se si todavia sigue siendo valida en C# estoy medio oxidado) para transformarlo en TAB.


    Gracias por la buena predisposicion, es de excelente ayuda!
    Non Scripted Human
    lunes, 31 de agosto de 2009 19:54
  • correpcion al codigo ya que si presionas cualquier letra avanzara al siguiente objeto

     

    private void Form1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == '\r')
           this.SelectNextControl(this.ActiveControl, true, true, true, true);
    }

    Saludos,

    Probando!! :D
    Non Scripted Human
    • Marcado como respuesta Xaphire lunes, 31 de agosto de 2009 20:32
    • Desmarcado como respuesta Xaphire lunes, 31 de agosto de 2009 20:32
    lunes, 31 de agosto de 2009 19:56
  • hola
    en lugar del "\r" prueba con  "Keys.Enter ", creo que queda mejor:


    private void IdTbx_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if((e.KeyCode==Keys.Enter)||(e.KeyCode==Keys.Tab))
        {
            if (!IdTbx.Text.Equals(""))
            {
                PsswordTbx.Focus();
            }
            else
            {
                CancelBtn.Focus();
            }
        }
    }


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    lunes, 31 de agosto de 2009 19:59
  • hola
    en lugar del "\r" prueba con  "Keys.Enter ", creo que queda mejor:


    private void IdTbx_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
    {
        if((e.KeyCode==Keys.Enter)||(e.KeyCode==Keys.Tab))
        {
            if (!IdTbx.Text.Equals(""))
            {
                PsswordTbx.Focus();
            }
            else
            {
                CancelBtn.Focus();
            }
        }
    }


    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Lo probe en un Proyecto nuevo...y no se que es lo que quizá este haciendo mal, pero inclusive tanto con la propiedad del Form1 KeyPreview en True o False, no se detecta actividad al establecer un Breakpoint en el comiendo del metodo KeyDown.


    En el caso del ejemplo anterior...de Marvin Pineda, sucede lo mismo, estableci un breakpoint no detecta actividad en ese metodo.


    :S

    Alguno ya lo probo?

    Gracias desde ya ;)

    Non Scripted Human
    lunes, 31 de agosto de 2009 20:07
  • hola

    has verificado la asignacion del handler del evento, o sea en las propiedades del control, el rayo amarillo (en el solution explorer), allis e listan los eventos, que tenga uno en el evento KeyPress

    si este no esta asignado no se conecta con el metodo de evento que creaste, por lo tanto nunca se ejecutara

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    • Marcado como respuesta Xaphire lunes, 31 de agosto de 2009 20:12
    lunes, 31 de agosto de 2009 20:09
  • hola

    has verificado la asignacion del handler del evento, o sea en las propiedades del control, el rayo amarillo (en el solution explorer), allis e listan los eventos, que tenga uno en el evento KeyPress

    si este no esta asignado no se conecta con el metodo de evento que creaste, por lo tanto nunca se ejecutara

    saludos
    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    Excelente, faltaba solo eso,  (por cierto...al modificar eso ya comenzo a funcionar), ahora la pregunta (que si bien no es necesaria para resolver el problema es, porque en casi ningun lugar lo mencionan que hay que estabelcer la asignacion del Handler?


    Este codigo funciono....

     

    private void textBox1_KeyPress(object sender, KeyPressEventArgs e)

    {

     

    if (e.KeyChar == '\r')

     

    this.SelectNextControl(this.ActiveControl, true, true, true, true);

    }


    y estableciendo como Leandro dijo la propiedad KeyPress en el rayito dentro de las propiedades de control...

    Para los que quedaron desorientados como yo les dejo una imagen de ejemplo.... Muchas Gracias a Leandro por tu muy buena onda, y a Marvin Pineda por el codigo.


    Non Scripted Human
    lunes, 31 de agosto de 2009 20:31