打印列表的内容<>在文本框中

时间:2014-03-05 14:43:17

标签: c# .net list collections textbox

早上好,我遇到以下问题。我正在读取文件夹中的文件(.txt)的内容,但我现在想要的是将文件的内容打印到文本框中,但我遇到了问题。

我必须对此进行编码。

FolderBrowserDialog Lectura = new FolderBrowserDialog();
DialogResult response = Lectura.ShowDialog();

if (response == DialogResult.OK)
{
    string[] files = Directory.GetFiles(Lectura.SelectedPath);
    ListBox archivosListBox = new ListBox();
    archivosListBox.Items.AddRange(files);

    int tamanoLista = archivosListBox.Items.Count;
    List <string[]> Miarchivo = new List<string[]>();

    foreach (string archivos in archivosListBox.Items)
    {
        Miarchivo.Add(System.IO.File.ReadAllLines(archivos));
    }

    string[] leerArchivo;
    int j =Miarchivo.Count;

    for (int i = 0; i<tamanoLista; i++)
    {
        leerArchivo = Miarchivo[i];

        for (int k = 0; k < Miarchivo[i].Count(); k++)
        {
            //textBox1.Text += leerArchivo[k] ;
        }
    }
}

4 个答案:

答案 0 :(得分:3)

您需要在TextBox中的每个条目后面添加换行符。将您的代码更改为以下内容:

for (int k = 0; k < Miarchivo[i].Count(); k++)
{
    textBox1.Text += leerArchivo[k] + Environment.NewLine;
}

更多阅读:Environment.NewLine Property (MSDN)

答案 1 :(得分:3)

使用ReadAllText代替ReadAllLines并用字符串连接替换整个循环:

List<string> Miarchivo = new List<string>();
foreach (string archivos in archivosListBox.Items)    
    Miarchivo.Add(File.ReadAllText(archivos));

textBox1.Text = String.Join(Environment.NewLine, Miarchivo);

另一个(可能更好的解决方案)是使用TextBox.Lines属性并使用LINQ获取文件内容:

textBox1.Lines = archivosListBox.Items
                     .Cast<string>()
                     .SelectMany(archivos => File.ReadLines(archivos))
                     .ToArray();

答案 2 :(得分:1)

您宁愿更新textBox1.Text 一次,以避免不断重新粉饰

    if (response == DialogResult.OK)
    {

        string[] files = Directory.GetFiles(Lectura.SelectedPath);
        ListBox archivosListBox = new ListBox();
        archivosListBox.Items.AddRange(files);

        int tamanoLista = archivosListBox.Items.Count;

        List <string[]> Miarchivo = new List<string[]>();
        foreach (string archivos in archivosListBox.Items)
        {
          Miarchivo.Add(System.IO.File.ReadAllLines(archivos));
        }

        // Output into textBox1
        StringBuilder sb = new StringBuilder();

        foreach(String[] leerArchivo in Miarchivo) 
          foreach(String item in leerArchivo) {
            if (sb.Length > 0) 
              sb.AppendLine(); // <- Or other deriver, e.g. sb.Append(';');

            sb.Append(item);
          }

        // Pay attention: textBox1 has been updated once only
        textBox1.Text = sb.ToString();
    }

答案 3 :(得分:0)

根据您的评论,您似乎只需要在每行末尾换行:

textBox1.Text += leerArchivo[k] + Environment.NewLine ;