如何从textBox写入文本到文本文件,并从文件读回textBox

本文关键字:textBox 文本 从文件读 文件 | 更新日期: 2023-09-27 18:28:56

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

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关闭事件和我在两个地方添加的按钮点击事件中:

w.Close();
w.Dispose();

在textBox中,text changed事件im试图再次打开/创建用于写入的文件,首先写入行(如果其中有字符串),然后从textBox中写入新文本。

问题是,当我现在运行程序时,它首先自动进入textBox3文本更改事件,并在行上引发异常:

w = new StreamWriter(@"d:'ircbotsettings.txt");

进程无法访问文件"d:''ircbotsettings.txt",因为它正被另一个进程使用

我想做的是:

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

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

如何从textBox写入文本到文本文件,并从文件读回textBox

不需要StreamWriter或StreamReader,太多的混乱和样板。

我建议

   txtSettings.Text = System.IO.File.ReadAllText(path_to_file);

以及文本框中的Leave或Validated事件

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

不要在每个TextChanged事件中写入文件,否则它会在每次击键时写入文件,这将被证明是一个主要的瓶颈。在Leave或(Form_Closed,如果它在对话框中)中写入文件,或者使用Timer定期保存到文件(并使用在TextChanged事件中设置为true的布尔值跟踪更改)。