NameValueCollection doesnt save to Properties.Settings

本秂侑毒 提交于 2019-12-24 01:39:04

问题


I added an entry in the Properties.Settings named strCol that is of type NameValueCollection. I am using this to save items from a listview to the settings so that when the application reboots, the ListView gets re-populated again with the items that were saved previously. I'm only storing the item name and the tag from the ListViewItems.

But something strange is happening I cant explain.

I am using this code to save the items to the settings:

NameValueCollection nvCol = new NameValueCollection();
foreach (ListViewItem lviP in lvParmNames.Items)
{
    nvCol.Add(lviP.Text, lviP.Tag.ToString());
}
Properties.Settings.Default.strCol = nvCol;
Properties.Settings.Default.Save();

For some reason the Save and load in and from settings works fine, as long as the application is still active. But when the application has been closed and rebooted, the load doesn't work as if the NameValueCollection was not saved.

What am I missing here ?

How I'm currently loading the setting:

The call for loading, but it already seem to fail at the check if its null

if (Properties.Settings.Default.strCol != null)      
{        
    NameValueCollection nv = Properties.Settings.Default.strCol;
    foreach (string key in nv)
    {
        try
        {
            var value = nv[key];
            ListViewItem lvi = new ListViewItem(key);
            lvi.Tag = value;
            lvFamNames.Items.Add(lvi);
        }
        catch (Exception ex)
        {
            TaskDialog.Show("Error", "Error while parsing Family Names from saved settings. \n" + ex.Message);
        }
    }
}

Just noticed something:

Though i added the NameValueCollection in the sections it is actually not added when building the application. When i open the config file, the setting is not there. So i guess the issue is here, though now i need to figure out how to add it now.

Looking into the Settings.Designer.cs file, i guess this part looks wrong for the type of 'NameValueCollection`:

    [global::System.Configuration.UserScopedSettingAttribute()]
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
    public global::System.Collections.Specialized.NameValueCollection strColExcelFamNames {
        get {
            return ((global::System.Collections.Specialized.NameValueCollection)(this["strCol"]));
        }
        set {
            this["strCol"] = value;
        }
    }

来源:https://stackoverflow.com/questions/41086762/namevaluecollection-doesnt-save-to-properties-settings

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!