将文件中的文本加载到文本框中
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,然后我们再谈,好吗?
也许试试这样的东西:
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);
}
然后从那里继续您需要的任何逻辑。
我正在尝试将文本文件加载到 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,然后我们再谈,好吗?
也许试试这样的东西:
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);
}
然后从那里继续您需要的任何逻辑。