none
\n não muda de linha numa textbox RRS feed

  • Pergunta

  • Será possível ajudarem-me? Quando tento escrever numa textbox uma coisa tão simples como a seguinte displayTextBox.Text = "ESCREVEEMCIMA\nEXCREVEEMBAIXO"; usando o carater \n para mudar de linha verifica-se que o texto não muda de linha onde está colocado o \n. A propriedade MultiLine está ativa e já experimentei com o carater \r e tabém não funcionou, no entanto o tab, \t, funciona. Será possível ajudarem-me, já experimentei todas as outras propriedades e nenhuma corrigiu o problema.
    terça-feira, 27 de junho de 2017 18:29

Respostas

  • Paulo, As TextBox's tem uma propriedade chamada Lines, que é um array de strings. Para quebrar uma linha corretamente, você pode pegar o valor atual dessa propriedade, no momento que deseja fazer essa quebra, converter para um List, adicionar o valor ao final da List, e depois atribuir esse valor novamente a propriedade Lines da TextBox.

    using System.Linq;
    
    private void Btn_BrakLine_Click(object sender, EventArgs e)
    {
        List<string> newLine = new List<string>(Tbx_Test.Lines);
        newLine.Add("");
        Tbx_Test.Lines = newLine.ToArray();
    }

    No exemplo acima, nós usamos o método ToArray() para converter o List em array após adicionarmos uma outra linha, antes de atribuir esse valor novamente a propriedade Lines da TextBox.

    O legal disso é que também podemos colocar a quebra de linha em qualquer ponto, usando o Insert:

    private void Btn_BrakLine_Click(object sender, EventArgs e)
    {
        List<string> newLine = new List<string>(Tbx_Test.Lines);
        newLine.Insert(newLine.Count / 2, "TEST");
        Tbx_Test.Lines = newLine.ToArray();
    }

    E não se esqueça de setar a propriedade MultiLine pra true.

    Veja se isso te ajuda.

    quinta-feira, 29 de junho de 2017 14:01

Todas as Respostas

  • Asp.Net WebForms

    <asp:TextBox TextMode="MultiLine"

    Windows Form

    TextBox.Multiline = true;

    terça-feira, 27 de junho de 2017 18:56
  • Obrigado pelo interesse por um problema tão simples, mas a propriedade MultiLine está true e o problema mantém-se.
    terça-feira, 27 de junho de 2017 19:02
  • Cara, testei dessa forma e funcionou. 


    textBox1.ScrollBars = ScrollBars.Both;
    textBox1.Multiline = true;
    textBox1.Text = "ESCREVEEMCIMA\nEXCREVEEMBAIXO";

    terça-feira, 27 de junho de 2017 19:49
  • César, mesmo com as duas propriedades ativadas como disse, o problema mantém-se. Verifiquei que numa MessageBox tudo funciona bem mas numa label funciona a \n mas \t não funciona. Poderá ser instabilidade do Visual Studio 2015 Community e estar a precisar de ser reinstalado?

    Obrigado

     
    terça-feira, 27 de junho de 2017 20:39
  • Paulo, boa tarde!

    Tente trocar o seu TextBox, por um RichTextBox, e veja se resolve o seu problema.

    att.

    Felipe

    quarta-feira, 28 de junho de 2017 19:46
  • Paulo,

    Tente \r\n ou Environment.NewLine.

    Exemplo:

    textBox1.Text = generatedCode.Replace("\n", "\r\n");

    ou

    textBox1.Text = generatedCode.Replace("\n", Environment.NewLine);

    Referência:

    https://stackoverflow.com/questions/1751371/how-to-use-n-in-a-textbox


    Carlos Eduardo Ferreira

    quinta-feira, 29 de junho de 2017 11:03
  • Paulo, As TextBox's tem uma propriedade chamada Lines, que é um array de strings. Para quebrar uma linha corretamente, você pode pegar o valor atual dessa propriedade, no momento que deseja fazer essa quebra, converter para um List, adicionar o valor ao final da List, e depois atribuir esse valor novamente a propriedade Lines da TextBox.

    using System.Linq;
    
    private void Btn_BrakLine_Click(object sender, EventArgs e)
    {
        List<string> newLine = new List<string>(Tbx_Test.Lines);
        newLine.Add("");
        Tbx_Test.Lines = newLine.ToArray();
    }

    No exemplo acima, nós usamos o método ToArray() para converter o List em array após adicionarmos uma outra linha, antes de atribuir esse valor novamente a propriedade Lines da TextBox.

    O legal disso é que também podemos colocar a quebra de linha em qualquer ponto, usando o Insert:

    private void Btn_BrakLine_Click(object sender, EventArgs e)
    {
        List<string> newLine = new List<string>(Tbx_Test.Lines);
        newLine.Insert(newLine.Count / 2, "TEST");
        Tbx_Test.Lines = newLine.ToArray();
    }

    E não se esqueça de setar a propriedade MultiLine pra true.

    Veja se isso te ajuda.

    quinta-feira, 29 de junho de 2017 14:01