【发布时间】:2020-06-09 10:29:54
【问题描述】:
我有两种形式。主表单是用户通过按钮选择项目并将它们添加到表单中的列表视图的地方。然后有一个“结帐”按钮打开第二个表单,用户可以在其中编辑创建的订单。我使用序列化来保存数据,所以当返回之前的表单时,会显示列表的当前状态。但是当我尝试添加新项目时,以前的项目会被替换。 如何在不丢失任何数据的情况下在两个表单之间进行动态通信?
这是我的第一种形式:
private void buttonCheckOut_Click(object sender, EventArgs e)
{
var binFormatter = new BinaryFormatter();
using (var fileStream = new FileStream(@"D:\productsList.txt",
FileMode.Create, FileAccess.Write))
binFormatter.Serialize(fileStream, productsList);
CheckOutForm checkOut = new CheckOutForm(TotalBill.Text, productsList, false);
this.Hide();
checkOut.ShowDialog();
}
而第二种形式的反序列化是这样的:
Form1 f = new Form1(null);
var binFormatter = new BinaryFormatter();
using (var fileStream = new FileStream(@"D:\productsList.txt",
FileMode.Open, FileAccess.Read))
{
productsList1 = (List<Product>)binFormatter.Deserialize(fileStream);
foreach (var pr in productsList1)
{
f.listView1.Items.Add(pr.ToString());
}
}
【问题讨论】:
标签: c# winforms serialization