关闭表单后,DataGridView记录消失

我有一个datagridview,它没有绑定到数据库中的表。 datagridview由下拉列表的内容和按钮单击上的文本框填充。 我想阻止每次关闭表单时删除记录。 有没有办法保存datagridview中的记录而无需创建数据库表?

以下是我的代码:

private void btnInsert_Click(object sender, EventArgs e) { this.dgInsertedInfo.Rows.Add(ddlVendorID.Text, txtDate.Text); } 

你有很多选择。 这是一个使用XML序列化的简单解决方案。

请注意,它做了一些假设:

  • 数据都是字符串
  • DataGridView已经包含了所有列

要保存其他数据类型,您应该创建一个可序列化的结构!

 private void saveButton_Click(object sender, EventArgs e) { List> data = new List>(); foreach(DataGridViewRow row in dgInsertedInfo.Rows) { List rowData = new List(); foreach (DataGridViewCell cell in row.Cells) rowData.Add(cell.FormattedValue.ToString()); data.Add(rowData); } XmlSerializer xs = new XmlSerializer(data.GetType()); using (TextWriter tw = new StreamWriter(yourFileName)) { xs.Serialize(tw, data); tw.Close(); } } private void loadButton_Click(object sender, EventArgs e) { List> data = new List>(); XmlSerializer xs = new XmlSerializer(data.GetType()); using (TextReader tr = new StreamReader(yourFileName)) data = (List>) xs.Deserialize(tr); foreach (List rowData in data) dgInsertedInfo.Rows.Add(rowData.ToArray()); } 

您可以编写OWN类并将其另存为setting属性。

物业设置

class级设定:

 namespace MyNamespace { public class Settings { private ObservableCollection DataGridItemsProp; public ObservableCollection DataGridItems { get { return DataGridItemsProp; } set { DataGridItemsProp = value; } } } } 

获取并保存您的设置:

 //get settings var datagrid = Properties.Settings.Default.UserSettings; //save settings Properties.Settings.Default.UserSettings= datagrid; Properties.Settings.Default.Save();