我在框架v3.5 PRJ
上有这个public BindingList<BackupItem> bb = new BindingList<BackupItem>();
何时
private void Form1_Load(object sender, EventArgs e)
{
checkedListBox1.DataSource = bb;
checkedListBox1.DisplayMember = "backupName";
}
我实现了添加/编辑/删除'触摸'只有 BindingList 全部按预期工作,最后将保存/加载 BindingList 内容。
- 完成了 - 已完成
hmm加载记录时没有出现在 checkedListBox1 !!
要显示记录,我必须使用
重新启动 checkedListBox1private void toolStripJSONLoad_Click(object sender, EventArgs e)
{
string tmp = File.ReadAllText(@"D:\path.txt", Encoding.UTF8);
JavaScriptSerializer oSerializer = new JavaScriptSerializer();
bb = oSerializer.Deserialize<BindingList<BackupItem>>(tmp);
checkedListBox1.DataSource = null;
checkedListBox1.DataSource = bb;
checkedListBox1.DisplayMember = "backupName";
}
任何人都知道什么?
答案 0 :(得分:0)
声明:
bb = oSerializer.Deserialize<BindingList<BackupItem>>(tmp);
正在创建一个全新的对象,指向checkedListBox1.DataSource
所指向的不同内存位置。
您需要做的是修改bb
变量的内容。首先清除内容然后添加新项目。像这样:
private void toolStripJSONLoad_Click(object sender, EventArgs e)
{
string tmp = File.ReadAllText(@"D:\path.txt", Encoding.UTF8);
JavaScriptSerializer oSerializer = new JavaScriptSerializer();
var tmpObj = oSerializer.Deserialize<List<BackupItem>>(tmp);
bb.Clear();
tmpObj.ForEach(o => bb.Add(o));
}