绑定到Specialized.StringDictionary的列表框不会更新

时间:2010-05-17 04:09:49

标签: c# listbox application-settings stringdictionary

我有一个列表框(listStorageLocations) - 它绑定到名为listStorageLocationsBindingSource的BindingSource。此BindingSource绑定到Settings.Default.StorageLocations中的StringDictionary项的集合。然后将列表框的数据源设置为bindingsource。我不能为我的生活在这个爆破的列表框中显示任何东西(除非我专门添加测试项目)。

以下是一些代码:

表单初始化:

listStorageLocations.DisplayMember = "Key";
listStorageLocations.ValueMember = "Value";
listStorageLocationsBindingSource.DataSource = Settings.Default.StorageLocations;
listStorageLocations.DataSource = listStorageLocationsBindingSource;
if (Settings.Default.StorageLocations == null)
    Settings.Default.StorageLocations = new StringDictionary();

按钮逻辑,用于添加新的存储位置:

private void btnAddStorageLocation_Click(object sender, EventArgs e)
{
    if (!txtStorageLocation.Text.Equals("") && !(txtStorageLocationName.Text.Equals("") &&
          !(StorageLocationsContainsPath(txtStorageLocation.Text)) &&
          !(StorageLocationsContainsName(txtStorageLocationName.Text))))
    {
        Settings.Default.StorageLocations.Add(txtStorageLocationName.Text, txtStorageLocation.Text);
    }
    Settings.Default.Save();

    listStorageLocationsBindingSource.ResetBindings(false);
}

我试着以78度的角度举起我的手臂,跳过7个燃烧的箍,站在我的头上无济于事。他错过了一些愚蠢的细节吗?

哦,我也在这里调用Settings.Default.Save()只是为了在我的StringDictionary中获取一些初始值 - 但当然 - 这也不起作用,因为当我重新启动应用程序时 - 没有项目。< / p>

1 个答案:

答案 0 :(得分:0)

好吧我弄明白了,StringDictionary类不是Serializable所以我的设置不是用Settings.Default.Save()保存的 - 所以我朝这个方向走错了方向。要以不同方式存储数据。