将文件中的文本加载到文本框中

Loading Text from a file into a Text box

我正在尝试将文本文件加载到 textbox。要加载的文件是从列表框中选择的 UnViewed_Messages 但是当我尝试加载文件时它什么也没做。

用于填充列表框的代码如下:

public Quarantine_Messages()
    {
        InitializeComponent();
        //loads in files to the list box on load
        DirectoryInfo DirFiles = new DirectoryInfo(@"C:\User\***\Documents\Noogle system\Quarantin_Messages");
        FileInfo[] Files = DirFiles.GetFiles("*.txt");
        foreach (FileInfo file in Files)
        {
            UnViewed_Messages.Items.Add(file.Name);
        }
    }

这是我用来尝试将文本文件加载到文本框中的代码 Message_Viewer

 private void Open_Message_Content_Click(object sender, RoutedEventArgs e)
    {
        //tries to read in the file to the text box Message_Viewer
        string[] Files = Directory.GetFiles(@"C:\User\***\Documents\Noogle system\Quarantin_Messages");
        foreach (string file in Files)
        {
            if (System.IO.Path.GetFileName(file) != UnViewed_Messages.SelectedItems.ToString())
            {
                using (var viewer = new StreamReader(File.OpenRead(file)))
                {
                    Message_Viewer.Text = viewer.ReadToEnd();
                    viewer.Dispose();
                }
            }
        }
    }

如有任何帮助,我们将不胜感激,在此先致谢。

不用流阅读器,只需使用:

string[] lines = File.ReadAllLines(file);
Message_Viewer.Text = String.Join(Environment.NewLine, lines)

就是这样。 C#/.NET I/O 如果你懂这些,那真的很干净。

编辑:请记住,对于非常大的文件,您仍然必须使用文件流逐行读取和添加,但这应该不是问题。我的意思是用文本行填充你的 ram,然后我们再谈,好吗?

MSDN File-I/O

也许试试这样的东西:

    private FileInfo[] files;
    private DirectoryInfo directory;

    private void Form1_Load(object sender, EventArgs e)
    {
        directory = new DirectoryInfo(@"C:\Users\smelendez\downloads");
        files = directory.GetFiles("*.txt");
        foreach (FileInfo file in files)
        {
            listBox1.Items.Add(file.Name);
        }
    }

    private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
    {
        var selectedFile = files[listBox1.SelectedIndex];

        richTextBox1.Text = "";
        richTextBox1.Text = File.ReadAllText(selectedFile.FullName);
    }

然后从那里继续您需要的任何逻辑。