Usuário com melhor resposta
TextBox multline receber dados com quebra de linha

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
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
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
-
-