我需要在文件中写入数据,并且ı在关闭表单后不想丢失数据。
我创建了一个成员身份,并且ı在文件中写了textbox1,2,3,然后在我关闭表单时丢失了所有数据。
try
{
FileStream fs = new FileStream("Uye.txt", FileMode.Create);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(textBox1.Text + "," + textBox2.Text + "," + textBox3.Text);
sw.Close();
fs.Close();
label4.Text = "Üyelik oluşturuldu";
button2.Visible = true;
}
catch (Exception)
{
label4.Text = "Üyelik oluşturulamadı";
}
答案 0 :(得分:4)
几件事
using
中。FormClosed
事件File.WriteAllText
即可简化操作,以确保释放文件句柄并将数据刷新到磁盘上示例
public void SaveData()
{
File.WriteAllText($"{textBox1.Text},{textBox2.Text},{textBox3.Text}");
}
private void Form1_FormClosed(object sender, FormClosedEventArgs e)
{
SaveData();
}
*注意:我添加了String Interpolation,因为在大多数情况下它更易于阅读,还添加了异常处理以提高品味*
只是为了简明using
,这将是您所拥有的更好的模式
using (var fs = new FileStream("Uye.txt", FileMode.Create))
using (var sw = new StreamWriter(fs))
{
sw.WriteLine($"{textBox1.Text},{textBox2.Text},{textBox3.Text}");
}
// or
// note that disposing sw in the single using will dispose the file stream
using (var sw = new StreamWriter(new FileStream("Uye.txt", FileMode.Create)))
{
sw.WriteLine($"{textBox1.Text},{textBox2.Text},{textBox3.Text}");
}
更新
来自vasily.sib的有用评论
您也可以覆盖表单的
OnFormClosed
方法,而不是 订阅自己的事件
答案 1 :(得分:0)
您应该将文本框数据保存在事件form_closing
中