C# 如何读取多个文本文件并将其存储在文本框中?

C# 如何读取多个文本文件并将其存储在文本框中?,c#,file,text,C#,File,Text,我撞上了精神墙。基本上,这段代码应该执行并收集文件夹中的所有文本文件(并最终每10秒更新一次文本框) 目前,它一次只能从一个或两个文件中提取文本,就这样。它也不会更新此textbox3。我想知道是否有人知道为什么会这样 由于我已经用这个代码工作了几个小时,我不知道我有多清楚。如果您对此有任何疑问,请随时提问。谢谢你的关注 public void read() { string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\

我撞上了精神墙。基本上,这段代码应该执行并收集文件夹中的所有文本文件(并最终每10秒更新一次文本框) 目前,它一次只能从一个或两个文件中提取文本,就这样。它也不会更新此textbox3。我想知道是否有人知道为什么会这样

由于我已经用这个代码工作了几个小时,我不知道我有多清楚。如果您对此有任何疑问,请随时提问。谢谢你的关注

public void read()
{
    string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt",
                                     SearchOption.AllDirectories);

    foreach (string file in filePaths)
    {
        TextReader objstream = new StreamReader(file);

        textBox3.Text = objstream.ReadToEnd();

        objstream.Close();

        textBox3.Select(textBox3.Text.Length, 0);
        textBox3.ScrollToCaret(); 

        break;
    }
}
而不是

textBox3.Text = objstream.ReadToEnd(); 
试一试

编辑1:如果要刷新此文本框,请不要忘记在刷新前清除其文本。(
textBox3.Text=”“
就可以了)。您也可以将这一行放在
read()
的开头

编辑2:删除
break行中的for…each循环。

也可以尝试

textBox3.AppendText(objstream.ReadToEnd());
但这里要记住的一件事是文件编码。如果文件编码不是UTF-8,则文本框中的显示方式可能与文本编辑器中的显示方式不同


希望这对您有所帮助

如果您真的不需要太多地干预流,我只需要使用System.IO.File静态类上的方法来读取并返回所有文本。使用它和AppendText,您基本上可以将它组合成一个语句。不过,我建议在文件读取时加入一些异常检查

string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt", SearchOption.AllDirectories);  
foreach (string file in filePaths)
  textBox3.AppendText(System.IO.File.ReadAllText(file));

您可以使用
+=
而不是
=
来附加下一个流。目前,无论插入符号在哪里,您都在覆盖上一个流。当您说它没有更新textbox3时,行为是什么?它是否不显示任何数据,是否仅显示第一个文件中的数据,还是仅显示最后一个文件中的数据?我想这是后一种选择,因为每次你都会覆盖文本框的内容
using(TextReader objStream=new StreamReader(file)){…}
,然后您可以省略
Close()
调用(using中的最后一个将破坏对象,该对象将关闭())。感谢Emir Akaydın的输入,但是它仍然没有基本上将所有文件读取到我的文本框中(可能会笑)。我正在为一个医疗服务项目写一个小插件,它允许我在我的c#程序中基本上有一个小论坛聊天。因为我不确定是否使用防火墙的套接字;我正在使用文本文件。因此,使用该程序的每个人都将创建一个小文本文件,并能够在各自的文本文件中键入内容,然后该程序将所有文本文件信息合并到一个文本框中。这有意义吗?嗯,这不是正确的方法,你已经知道了。但只要它解决了你的问题,你就可以使用这种方法,因为你知道这不是一个真正的解决方案,而是一个肮脏的变通方法。我只是注意到了那个断裂;顺便说一句,去掉那个破口;每个循环中的行。那可能是你的问题。是的,那是最后的问题。我自己也注意到了,它现在起作用了。除了我有一个新的问题,它没有排序的时间,我给他们的消息;这很公平。现在只是想解决这个问题。不知道如何告诉程序将文本文件中的日期按textbox3中的顺序排序。Grr.不应直接将文本插入文本框,而应将所有消息行(分开)插入到集合/字典或任何其他合适的可排序列表中,使用日期作为键。对项目进行排序后,应生成完整的输出。你需要阅读一些关于收藏或词典的文档。基本上(可能会笑)。我正在为一个医疗服务项目写一个小插件,它允许我在我的c#程序中基本上有一个小论坛聊天。因为我不确定是否使用防火墙的套接字;我正在使用文本文件。因此,使用该程序的每个人都将创建一个小文本文件,并能够在各自的文本文件中键入内容,然后该程序将所有文本文件信息合并到一个文本框中。这有意义吗?
string[] filePaths = Directory.GetFiles(@"U:\My Documents\chat\", "*.txt", SearchOption.AllDirectories);  
foreach (string file in filePaths)
  textBox3.AppendText(System.IO.File.ReadAllText(file));