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

时间:2016-03-11 14:18:17

标签: c# wpf textbox listbox streamreader

我正在尝试将文本文件加载到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();
                }
            }
        }
    }

非常感谢任何帮助,提前谢谢。

2 个答案:

答案 0 :(得分:2)

尝试类似这样的事情:

    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);
    }

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

答案 1 :(得分:0)

只需使用:

,而不是您的streamreader
string[] lines = File.ReadAllLines(file);
Message_Viewer.Text = String.Join(Environment.NewLine, lines)

多数民众赞成。如果你知道的话,C#/。NET I / O真的很干净。

编辑:请记住,对于非常大的文件,您仍然需要使用文件流来逐行读取和添加,但它确实不应该成为问题。我的意思是用文本行填充你的ram,然后我们再说一遍,好吗?

Why is using "for...in" with array iteration a bad idea?