none
Quebrar linha textbox keydown RRS feed

  • Pergunta

  • Pessoal, não achei nada na internet como exemplo para quebrar linha em um textbox multline com um evento como o KeyDown para quando apertar por exemplo F12 cair para linha de baixo do texto, da forma abaixo ele retorna para o inicio da linha escrita ao invés de cair para linha de baixo:

     private void TxtObservacao_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.F12) 
                {
                    TxtObservacao.Text += Environment.NewLine;
                }
            }


    sábado, 20 de fevereiro de 2016 01:21

Respostas

  • Tenta isso aqui, espero que de certo

                if (e.KeyCode == Keys.F12)
                {
                    textBox1.Text += Environment.NewLine ;
                    textBox1.Select(textBox1.Text.Length, 0);
                }

    Junior

    domingo, 21 de fevereiro de 2016 16:15
  • Junior, você sabe como pode ser feito para usar 2 teclas ao invés de apenas F12 por exemplo para quebrar a linha apertar CTRL+F12?

    RESOLVIDO, SEGUE O CODIGO PARA QUEM PRECISAR:

    if (e.KeyCode == Keys.Down)
                {
                    if (e.Shift)//Shift + TECLA PARA BAIXO
                    {
                        TxtObservacao.Text += Environment.NewLine;
                        TxtObservacao.Select(TxtObservacao.Text.Length, 0);
                    }
                }

    • Marcado como Resposta Guilherme Walter segunda-feira, 22 de fevereiro de 2016 01:53
    segunda-feira, 22 de fevereiro de 2016 01:53

Todas as Respostas

  • Não sei se ajuda, mas e se você ao pressionar F12 mardar dar um \n no seu campos
    txtObservação.Text += "\n";

    Junior

    sábado, 20 de fevereiro de 2016 10:40
  • Verifiquei aqui e o \n não da certo ele funciona como o NewLine

    Faça assim que da certo:

                if (e.KeyCode == Keys.F12)
                    SendKeys.Send("{ENTER}");


    Junior

    sábado, 20 de fevereiro de 2016 10:52
  • Junior, não deu, o ENTER no meu sistema emula o TAB para pular de campo, dessa forma quando eu aperto F12 ele pula para o próximo campo ao invés de pular pra linha de baixo.
    sábado, 20 de fevereiro de 2016 11:28
  • Entendi ... hummm dai danou-se rsssss
    Bom pode tentar usar uma POG rssss

    Cria uma variavel public ao Form char cEnter = 'S'

    E no seu evento keydown faz assim

    

    if (e.KeyCode == Keys.F12)
    {
         cEnter = 'N';
         SendKeys.Send("{ENTER}");
         if(cEnter == 'S')
          {
              // aqui vc coloca seu codigo para usar o TAB com ENTER
              cEnter = 'S';

          }

       }

    Uma POG mas pode te ajudar


    Junior

    sábado, 20 de fevereiro de 2016 13:36
  • Junior, o código para emular TAB com ENTER fica no KeyDown do Form, então acho que não vai resolver ali, o que significa  cEnter? é uma string?

    aqui no VS não reconheceu esse nome.

    sábado, 20 de fevereiro de 2016 13:51
  • O cEnter é uma variavel do tipo char eu que acabei escrevendo de uma forma confusa pois coloquei o tipo na variavel na linha de cima, mas seria assim

    char cEnter = 'S'; ou voacê também pode ter uma variavel boolean para isso vc pode mudar o valor dessa variavel dentro do load do seu form seria uma forma de contornar o diparo da rotina que troca o TAB pelo ENTER


    Junior

    sábado, 20 de fevereiro de 2016 14:18
  • Prezado Guilherme Walter,

    Boa tarde!

    a. O evento KeyDown somente para iniciar nova linha?

    b. A aplicação é em Windows Forms?

    Se sim, tente aplicar o exemplo abaixo:

            private void textBox1_KeyDown(object sender, KeyEventArgs e)
            {
                if (e.KeyCode == Keys.F12)
                {
                    try
                    {
                        textBox1.Text = textBox1.Text += "\n";
                        textBox1.Select(textBox1.Text.Length, 100000);
                    }
                    catch (Exception)
                    {
                        MessageBox.Show("Não foi possível realizar o evento da tecla F12.");
                    }
                }
            }

    Obs.: pode ser necessário realizar alguns ajustes.

    No que puder ajudar, à disposição,

    Atenciosamente,

    Rafael Assaad

    sábado, 20 de fevereiro de 2016 19:02
  • Rafael, obrigado pela ajuda, eu fiz o teste e não deu certo, por exemplo, eu digito a linha e aperto F12 ele pula a linha, ai na segunda linha se você digitar algo e apertar F12, ele pega a tua 2 linha digitada e joga para 1 linha de cima.
    sábado, 20 de fevereiro de 2016 19:51
  • Guilherme fiz testes em uma aplicação e funciona corretamente com o codigo SENDKEYS, o grande problema é que você tem um codigo que faz essa alteração de teclas ENTER para TAB no seu form, o que me ocorreu aqui foi o seguinte, eu testei e deu certo veja se te ajuda

                if (e.KeyCode == Keys.F12)
                {
                    SendKeys.Send("{ENTER}");
                    textBox1.Focus();
                }

    A cada F12 ele muda de linha ou seja dispara um ENTER dentro do objeto e da o foco no mesmo objeto


    Junior

    • Marcado como Resposta Guilherme Walter domingo, 21 de fevereiro de 2016 13:03
    • Não Marcado como Resposta Guilherme Walter domingo, 21 de fevereiro de 2016 13:04
    domingo, 21 de fevereiro de 2016 11:01
  • Nada Junior, eu preciso de uma forma que não use o ENTER, sera que tem?
    domingo, 21 de fevereiro de 2016 13:08
  • Tenta isso aqui, espero que de certo

                if (e.KeyCode == Keys.F12)
                {
                    textBox1.Text += Environment.NewLine ;
                    textBox1.Select(textBox1.Text.Length, 0);
                }

    Junior

    domingo, 21 de fevereiro de 2016 16:15
  • Agora sim, valeu Junior!!!
    domingo, 21 de fevereiro de 2016 21:09
  • Junior, você sabe como pode ser feito para usar 2 teclas ao invés de apenas F12 por exemplo para quebrar a linha apertar CTRL+F12?
    segunda-feira, 22 de fevereiro de 2016 01:17
  • Junior, você sabe como pode ser feito para usar 2 teclas ao invés de apenas F12 por exemplo para quebrar a linha apertar CTRL+F12?

    RESOLVIDO, SEGUE O CODIGO PARA QUEM PRECISAR:

    if (e.KeyCode == Keys.Down)
                {
                    if (e.Shift)//Shift + TECLA PARA BAIXO
                    {
                        TxtObservacao.Text += Environment.NewLine;
                        TxtObservacao.Select(TxtObservacao.Text.Length, 0);
                    }
                }

    • Marcado como Resposta Guilherme Walter segunda-feira, 22 de fevereiro de 2016 01:53
    segunda-feira, 22 de fevereiro de 2016 01:53