我正在使用存储对象列表的文本文件,我正在尝试创建一个按钮,该按钮将根据用户在表单中输入的内容更新文本文件中的项目。我对当前代码的问题是它覆盖整个文件,只显示列表中的一个项目。
以下是我目前保存到文本的代码,感谢您的帮助。
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
// Save everything in a dialog box
saveFileDialog1.ShowDialog();
// Open the file and save the information
Stream textOut = saveFileDialog1.OpenFile();
StreamWriter writer = new StreamWriter(textOut);
FormToObject();
string str = c.GetToString();
writer.WriteLine(str);
writer.Close();
}
private void FormToObject()
{
c.Brand = txtBrand.Text;
c.Model = txtModel.Text;
c.Year = txtYear.Text;
c.Price = txtPrice.Text;
c.NumMiles = txtNumMiles.Text;
BodyCheck();
GearCheck();
}
答案 0 :(得分:0)
您可以在应用初始化时立即加载文件并存储对象列表,例如在App.xaml.cs文件中。创建一个save方法,用于操作内存中的对象列表,并同时将集合保存到文件中。这样,集合的每个版本都会被新集合覆盖。
答案 1 :(得分:0)
Text file
是包含顺序数据的文件。您无法跳转到特定记录并更新,您必须创建新文件(或缓冲区)(1)将数据保存到您要更新的记录(2)更新记录,(3)继续文件的其余部分。
看起来,在您的情况下,您正在寻找包含记录的Binary file
,并且您每次都可以更新特定记录。
您可以在C#here中阅读有关二进制文件的信息。
答案 2 :(得分:0)
首先,您要将文件中的所有内容保存到列表中。之后你想从文本框中读取所有内容并最终将所有内容写入文本文件,对吗?
这里有一些伪代码:
private void saveAsToolStripMenuItem_Click(object sender, EventArgs e)
{
// Save everything in a dialog box
saveFileDialog1.ShowDialog();
// Open the file and save the information
Stream textOut = saveFileDialog1.OpenFile();
list<string> textfile = texout.ReadLines();
foreach(item i in itemlist)
{
texfile.Add(i);
}
StreamWriter writer = new StreamWriter(textOut);
foreach(string str in texfile)
{
writer.WriteLine(str);
}
writer.Close();
}