我的DataGridView
填充了BindingList
。此列表将保存到“设置”文件中。它可以正确保存和加载..但只会在我第一次调用Properties.Settings.Save()
时保存。之后,调用Save()
将无效。
我已经确认正在调用Save()
,并且在调用它时BindingList
包含正确的数据。无论我是在列表中添加,删除还是编辑元素,它都只会在第一次调用时保存到user.config。之后,甚至没有打开user.config进行编辑。
有谁知道为什么会这样?
答案 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()
并不重要)
即使列表中的项目正确实现BindingList
,INotifyPropertyChanged
也不得将其值标记为已更改。
值得注意的是,调用Settings.Default.MachineList.Machines.EndNew(1)
也解决了问题(!?!)。来自documentation:
EndNew
方法提交通过AddNew
方法添加的待处理新项。 如果没有新项目等待提交,则此方法不执行任何操作。
有人可以对此有所了解吗?我做错了什么,或者这是DataGridView
或BindingList
(或者Settings
提供商)中的错误?