C# 添加StreamReader实例时出错
这是我的代码,打算在单击菜单条“打开”时运行。但不知怎么的,这在我的应用程序上造成了一个障碍。代码中的错误是什么?您正在向txt追加内容,因此它永远不能为空。请尝试C# 添加StreamReader实例时出错,c#,text-files,streamreader,C#,Text Files,Streamreader,这是我的代码,打算在单击菜单条“打开”时运行。但不知怎么的,这在我的应用程序上造成了一个障碍。代码中的错误是什么?您正在向txt追加内容,因此它永远不能为空。请尝试 private void openToolStripMenuItem_Click(object sender, EventArgs e) { string txt = ""; OpenFileDialog ofd = new OpenFileDialog();
private void openToolStripMenuItem_Click(object sender, EventArgs e)
{
string txt = "";
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Text File|*.txt";
ofd.FileName = "File";
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
StreamReader sr = new StreamReader(File.OpenRead(ofd.FileName));
while (txt != null) {
txt += sr.ReadLine() + "\n";
if (txt != null) richTextBox1.Text += txt;
else sr.Dispose();
}
}
}
此外,您应该始终处理您的streamreader,以便像这样包装您的while循环(也替换streamreader line)
代码中的直接错误在循环条件中:
using(StreamReader sr = new StreamReader(File.OpenRead(ofd.FileName)))
{
//While loop here
}
因为txt不是空的,所以您的应用程序将阻塞在无限循环中。
还有一些其他问题:
while (txt != null)
这是Windows应用程序吗?你有没有试过设置一个断点,看看它会卡在哪里?
while (txt != null)
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "Text File|*.txt";
ofd.FileName = "File";
StringBuilder Sb = new StringBuilder();
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK) {
using (StreamReader sr = new StreamReader(File.OpenRead(ofd.FileName))) {
while (!sr.EndOfStream)
if (Sb.Length > 0) {
Sb.AppendLine();
Sb.Append(sr.ReadLine());
}
else
Sb.Append(sr.ReadLine());
}
richTextBox1.Text += Sb.ToString();
}