none
Sair do foco do campo (evento Leave) com a tecla ENTER em lugar do TAB RRS feed

  • Pergunta

  • Como fazer para sair do foco do campo (evento Leave) com a tecla ENTER em lugar do TAB ?

    Em aplicação C++ eu fazia uma rotina que trocava o Tab pelo ENTER, mais intuitivo.

    E com C# ?



    • Editado Marcos SJ quarta-feira, 13 de janeiro de 2016 15:05 Edição
    quarta-feira, 13 de janeiro de 2016 14:44

Respostas

  • Ola, Sebastião!

    Em resposta ao seu problema tenho uma sugestão de como poderá resolve-lo!

    Criaremos uma controle "virtual" para desviar o foco para ele, segue o código!

    OBS: Imagine que seu textbox ou campo se chama TextBox1

            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if ((e.KeyData == Keys.Enter))
                {
                    RemoverFoco();
                }
            }
    
            public void RemoverFoco()
            {
                Control x = new Control();
                this.Controls.Add(x);
                x.Focus();
                x.Dispose();
            }

    Espero ter ajudado!


    C#.NET / VB.NET
    Aulas de VB.NET

    Não se esqueça! Se uma resposta/post te foi útil, é generoso reconhece-lo clicando em votar e se uma resposta foi fundamental para o desenrolar dum problema marque como resposta, você ajuda(visitantes) e motiva(quem te respondeu)!

    sexta-feira, 15 de janeiro de 2016 00:38
  • if (e.KeyCode == Keys.Enter)
    {
         e.SuppressKeyPress = true;// com esta linha o som não será reproduzido.
    }

    segunda-feira, 18 de janeiro de 2016 10:16

Todas as Respostas

  • Sebastião Duarte,

    O que você está querendo seria algo assim?

    Link 01

    Link 02

    Link 03

    Link 04

    Link 05

    Link 06

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    quarta-feira, 13 de janeiro de 2016 15:09
  • Isso, Examente. Testei todos os exemplos e nenhum funcionou.

    Na verdade o evento não está sendo disparado.

    Sebastião Duarte

    quinta-feira, 14 de janeiro de 2016 22:32
  • Ola, Sebastião!

    Em resposta ao seu problema tenho uma sugestão de como poderá resolve-lo!

    Criaremos uma controle "virtual" para desviar o foco para ele, segue o código!

    OBS: Imagine que seu textbox ou campo se chama TextBox1

            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if ((e.KeyData == Keys.Enter))
                {
                    RemoverFoco();
                }
            }
    
            public void RemoverFoco()
            {
                Control x = new Control();
                this.Controls.Add(x);
                x.Focus();
                x.Dispose();
            }

    Espero ter ajudado!


    C#.NET / VB.NET
    Aulas de VB.NET

    Não se esqueça! Se uma resposta/post te foi útil, é generoso reconhece-lo clicando em votar e se uma resposta foi fundamental para o desenrolar dum problema marque como resposta, você ajuda(visitantes) e motiva(quem te respondeu)!

    sexta-feira, 15 de janeiro de 2016 00:38
  • Sebastião, 

     private void TextBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.Enter )
                { 
                   //alguma coisa se vc apertar o Enter  
                    //exemplo                         
                     Texbox2.Focus(); 
                }
                else if (e.KeyCode == Keys.Tab)
                { 
                // alguma coisa se vc apertar Tab
                // exemplo
                   Texbox2.Focus();
                }
            }

    Lembrando que no Form a propriedade KeyPreview deve estar setado como True.

    Espero que te ajude!

    Se for util Marque!

    Att, Wsti.

    sexta-feira, 15 de janeiro de 2016 00:53
  • Bom dia Sebastião,

    Para esse problema, a solução é utilizar um evento que dispara quando a tecla é pressionada (KeyPress, KeyDown ou KeyUp). Esse evento deve estar relacionado com o TextBox que você deseja tirar o foco.

    Para reconhecer a tecla ENTER pressionada, você pode fazer da seguinte maneira:

    private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
            if (e.Key == Key.Enter)
            {
                MessageBox.Show("ENTER pressionado");
            }
            //OU
            if (e.KeyChar == Convert.ToChar(Keys.Return))
            {
                MessageBox.Show("ENTER pressionado");
            }
            //OU
            if (e.KeyChar == (char)13)
            {
                MessageBox.Show("ENTER pressionado");
            }
    }

    Abs.

    Bruno Destro


    Dicas de programação em .net, C# e SQL - http://smcode.com.br/

    sexta-feira, 15 de janeiro de 2016 09:25
  • Assim funciona, valeu.

    Sebastião Duarte

    sexta-feira, 15 de janeiro de 2016 13:49
  • André,

    Implementei tua sugestão com uma pequena variação, utilizando SendKeys.

    Funciona bem e é bastante simples. A única observação é que vc terá que implementar uma chamada para cada texbox.A nivel de Forms os eventos de KeyDown ou KeyUp não são disparados. Seria o ideal. Também não sei porque.

    O único senão, na solução implementada, é que quando vc tecla Enter, gera um som, semelhante a quando tentamos teclar dados em um campo que não aceita entradas. Ou seja, parece que o box não aceita Enter, embora o evento seja disparado.

    Tens ideia do que seja ?

    domingo, 17 de janeiro de 2016 21:02
  • if (e.KeyCode == Keys.Enter)
    {
         e.SuppressKeyPress = true;// com esta linha o som não será reproduzido.
    }

    segunda-feira, 18 de janeiro de 2016 10:16
  • VC TEM Q TER A MALICIA, VC TEM Q TER A ESPERTESA MLK, SE ESFORÇA Q É SUA!1
    terça-feira, 19 de janeiro de 2016 16:26