这是我在 Form1 顶部所做的:
string line;
StreamWriter w;
StreamReader sr;
然后在构造函数中:
if (File.Exists(@"d:\test.txt"))
{
sr = new StreamReader(@"d:\test.txt");
line = sr.ReadToEnd();
textBox3.Text = line;
sr.Close();
sr.Dispose();
}
w = new StreamWriter(@"d:\test.txt");
然后在 textBox3 Text Changed 事件中:
private void textBox3_TextChanged(object sender, EventArgs e)
{
if (w == null)
{
w = new StreamWriter(@"d:\ircbotsettings.txt");
w.Write(line);
w.Write(textBox3.Text);
}
}
然后在 Form1 Closing 事件和按钮单击事件中,我在两个地方都添加了:
w.Close();
w.Dispose();
在文本框文本更改事件中,我试图再次打开/创建文件以写入首先写入行(如果其中有任何字符串)然后从文本框写入新文本。
问题是当我现在运行程序时,它首先自动进入 textBox3 文本更改事件并在该行抛出异常:
w = new StreamWriter(@"d:\ircbotsettings.txt");
该进程无法访问文件“d:\ircbotsettings.txt”,因为它正被另一个进程使用
我想做的是:
在文本框中实时键入任何文本时,它会将其保存到文本文件中。当我退出程序并再次运行它时,从文本文件中读取/加载文本并将其添加/放入文本框中。
因此,文本文件应该每次只包含一个字符串,并且每次运行程序时,它都应该将字符串读取/加载回文本框。