none
TextBox multline receber dados com quebra de linha RRS feed

  • Pergunta

  • Olá a todos.
    Me ajudem neste codigo.

    Porque é que quando faço assim:

    string

     

    [] strNomes = new string[] { "maria", "joão", "carlos" };

    textBox1

     

    .Text = textBox1.Text + string.Join(" " + Environment.NewLine, strNomes);

    Meu TextBox mostra a quebra de linha que é uma beleza, mas
    quando faço assim:

     FbDataReader dr = command.ExecuteReader();
    
      if (dr.HasRows)
      {
          while(dr.Read())
          {
              string[] fields = new string[dr.FieldCount];
              for (int i = 0; i < dr.FieldCount; i++)
              {
                   fields[i] = dr[i].ToString();
                   textBox1.Text = textBox1 + string.Join(" " +Environment.NewLine, fields);
              }
          }
       }
    simplesmente Meu TextBox não quebra as linhas, meu código não funciona.

    Descobrí que o motivo é porque a variavel fields[i] deveria receber os dados do dr, assim  {"","",""},
    igual a este modelo
    string[] strNomes = new string[] { "maria", "joão", "carlos" };
    e é por isto que a primeira opção funciona certinho.

    Alguem poderia me ajudar a colocar os dados do meu dr dentro da minha variavel fields conforme este modelo: string[] strNomes = new string[] { "maria", "joão", "carlos" }; ??

    Antecipo meus agradecimento.

    Airton Barros


    JOAB
    sábado, 1 de agosto de 2009 12:29

Respostas

  • Olá Airton,

    Primeiro: o formato { , , } ao que se refere nao existe. Isso é so uma forma de declarar e preencher os mesmo tempo o array.

    Ou seja:

    string[] str = new string[] {"A", "B"}

    é o mesmo que

    string[] str = new string[2];
    str[0] = "A";
    str[1] = "B";

    É tudo um array com posicoes ocupadas na memoria e nada tem a ver as tais das virgulas ali.

    Não há nada de diferente em relação à forma que voce esta preenchendo o "fields".

    Testei seu código aqui e ele está inserindo o '\n' normalmente no Textbox.

    O problema é que seu código não está correto.

    Assim funciona:

    while (dr.Read())
    {              
           string[] fields = new string[dr.FieldCount];
           for (int i = 0; i < dr.FieldCount; i++)
           {
                fields[i] = dr[i].ToString();                   
           }
           TextBox1.Text = TextBox1.Text + string.Join(Environment.NewLine, fields) + Environment.NewLine;
    }

    Porém, não sei se é exatamente isso que precisa. Se a tabela possuir mais de um campo, por exemplo:

    Codigo - Nome
    1         - A
    2         - B
    3         - C

    A saida do codigo acima, no textbox, será:
    1
    A
    2
    B
    3
    C

    Se voce quiser cada REGISTRO em uma linha do textbox, basta trocar no String.Join o separador por algo como espaço ou traço. Então, só mudaria na linha abaixo:

    TextBox1.Text = TextBox1.Text + string.Join(" - " , fields) + Environment.NewLine;


    Simples assim! :)

    Qquer coisa, dê um retorno.

    []s





    Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]
    • Marcado como Resposta JOAB_ARAUJO sábado, 1 de agosto de 2009 21:08
    sábado, 1 de agosto de 2009 19:08

Todas as Respostas

  • Olá Airton,

    Primeiro: o formato { , , } ao que se refere nao existe. Isso é so uma forma de declarar e preencher os mesmo tempo o array.

    Ou seja:

    string[] str = new string[] {"A", "B"}

    é o mesmo que

    string[] str = new string[2];
    str[0] = "A";
    str[1] = "B";

    É tudo um array com posicoes ocupadas na memoria e nada tem a ver as tais das virgulas ali.

    Não há nada de diferente em relação à forma que voce esta preenchendo o "fields".

    Testei seu código aqui e ele está inserindo o '\n' normalmente no Textbox.

    O problema é que seu código não está correto.

    Assim funciona:

    while (dr.Read())
    {              
           string[] fields = new string[dr.FieldCount];
           for (int i = 0; i < dr.FieldCount; i++)
           {
                fields[i] = dr[i].ToString();                   
           }
           TextBox1.Text = TextBox1.Text + string.Join(Environment.NewLine, fields) + Environment.NewLine;
    }

    Porém, não sei se é exatamente isso que precisa. Se a tabela possuir mais de um campo, por exemplo:

    Codigo - Nome
    1         - A
    2         - B
    3         - C

    A saida do codigo acima, no textbox, será:
    1
    A
    2
    B
    3
    C

    Se voce quiser cada REGISTRO em uma linha do textbox, basta trocar no String.Join o separador por algo como espaço ou traço. Então, só mudaria na linha abaixo:

    TextBox1.Text = TextBox1.Text + string.Join(" - " , fields) + Environment.NewLine;


    Simples assim! :)

    Qquer coisa, dê um retorno.

    []s





    Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]
    • Marcado como Resposta JOAB_ARAUJO sábado, 1 de agosto de 2009 21:08
    sábado, 1 de agosto de 2009 19:08
  • Olá Robson.

    Grato pela sua ajuda, o código funcionou perfeitamente.

    Sds.
    Airton Barros


    JOAB
    sábado, 1 de agosto de 2009 21:10
  • Disponha.

    []s
    Robson Castilho - MCTS .Net 2.0 Windows/Web Applications [Se o post foi útil, não esqueça de marcá-lo. Obrigado]
    sábado, 1 de agosto de 2009 21:37