我正在尝试将文本文件加载到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();
}
}
}
}
非常感谢任何帮助,提前谢谢。
答案 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)
只需使用:
,而不是您的streamreaderstring[] lines = File.ReadAllLines(file);
Message_Viewer.Text = String.Join(Environment.NewLine, lines)
多数民众赞成。如果你知道的话,C#/。NET I / O真的很干净。
编辑:请记住,对于非常大的文件,您仍然需要使用文件流来逐行读取和添加,但它确实不应该成为问题。我的意思是用文本行填充你的ram,然后我们再说一遍,好吗?