C# 如何从文本框将文本写入文本文件并从文件读回文本框?

C# 如何从文本框将文本写入文本文件并从文件读回文本框?,c#,winforms,textbox,C#,Winforms,Textbox,这是我在表格1顶部所做的: string line; StreamWriter w; StreamReader sr; 然后在构造函数中: if (File.Exists(@"d:\test.txt")) { sr = new StreamReader(@"d:\test.txt"); line = sr.ReadToEnd(); textBox3.Text = line;

这是我在表格1顶部所做的:

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文本更改事件中:

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 event中以及我在两个位置添加的button click event中:

w.Close();
w.Dispose();
在文本框文本更改事件中,我尝试再次打开/创建文件进行写入,首先写入行(如果其中有字符串),然后从文本框中写入新文本

问题是,当我现在运行程序时,它将自动首先进入textBox3 text changed事件,并在行中引发异常:

w = new StreamWriter(@"d:\ircbotsettings.txt");
进程无法访问文件“d:\ircbotsettings.txt”,因为其他进程正在使用该文件

我想做的是:

当在文本框中实时键入任何文本时,它会将其保存到文本文件中。 当我退出程序并再次运行它时,从文本文件读取/加载文本并将其添加/放入文本框


因此,文本文件每次只应包含一个字符串,每次运行程序时,它应将字符串读取/加载回文本框。

无需StreamWriter或StreamReader,太多杂乱和样板文件

我建议

   txtSettings.Text = System.IO.File.ReadAllText(path_to_file);
在文本框中的“离开”或“已验证”事件中

   System.IO.File.WriteAllText(path_to_file, txtSettings.Text);

不要在每次TextChanged事件时写入文件,否则它会在每次击键时写入文件,这将被证明是一个主要的瓶颈。要么在休假时写入文件,要么(如果在对话框中,则关闭表单),要么使用计时器定期保存到文件(并使用您在TextChanged事件中设置为true的布尔值跟踪更改)。

实时将内容写入文件真的是个坏主意。我们通常会定期写入一些已更改的数据块。每次文本更改时,您都会在事件处理程序中重新打开该文件,但不会关闭/显示它。