Properties.Settings.Save()仅在第一次调用时保存

时间:2010-02-24 21:45:09

标签: c# .net datagridview persistence settings

我的DataGridView填充了BindingList。此列表将保存到“设置”文件中。它可以正确保存和加载..但只会在我第一次调用Properties.Settings.Save()时保存。之后,调用Save()将无效。

我已经确认正在调用Save(),并且在调用它时BindingList包含正确的数据。无论我是在列表中添加,删除还是编辑元素,它都只会在第一次调用时保存到user.config。之后,甚至没有打开user.config进行编辑。

有谁知道为什么会这样?

2 个答案:

答案 0 :(得分:0)

对Save的调用将表示用户属性的类的IsDirty属性设置为false。在将用户属性保存到磁盘之前,将测试此属性。

如果需要多次调用Save,请将IsDirty属性设置为true:

Properties.Settings.Default.PropertyValues["property name"].IsDirty = true;

答案 1 :(得分:0)

我不小心找到了解决办法,但我不知道为什么会有效。

在调用Settings.Default.MyBindingList.ResetBindings()修复问题之前,似乎正在调用Settings.Default.MyBindingList.ResetItem(1)ResetItem()将哪个数字传递给Save() 并不重要)

即使列表中的项目正确实现BindingListINotifyPropertyChanged也不得将其值标记为已更改。

值得注意的是,调用Settings.Default.MachineList.Machines.EndNew(1)也解决了问题(!?!)。来自documentation

  

EndNew方法提交通过AddNew方法添加的待处理新项。 如果没有新项目等待提交,则此方法不执行任何操作。

有人可以对此有所了解吗?我做错了什么,或者这是DataGridViewBindingList(或者Settings提供商)中的错误?