加载项时的BindingList

时间:2014-01-30 09:49:43

标签: c# bindinglist

我在框架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 !!

要显示记录,我必须使用

重新启动 checkedListBox1
private 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";
}

任何人都知道什么?

1 个答案:

答案 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));
}