保存Properties.Settings.Default要列出的项目,更改值,然后将其保存到文件中

时间:2013-07-09 15:13:54

标签: c# visual-studio-2010 settings

在我的Settings.settings文件中,我有10个bool项目,我试图将它们全部保存到列表中,然后遍历它们,更改它们的值,然后将其保存回设置文件,但它不起作用。

这是一个简短的例子:

    public List<bool> list = new List<bool>();

    list.Add(Properties.Settings.Default.Item0);
    list.Add(Properties.Settings.Default.Item1);
    list.Add(Properties.Settings.Default.Item2);
    list.Add(Properties.Settings.Default.Item3);
    list.Add(Properties.Settings.Default.Item4);
    // ... up to 10

然后我试图通过它们进行迭代:

        for (int i = 0; i < list.Count; i++)
        {
            if (listBox1.GetSelected(i))
            {
                list[i] = true;
            }
            else
            {
                list[i] = false;
            }
        }

        Properties.Settings.Default.Save();  // it sets list items properly but it doesn't actually save it to the user settings file

所以如果我会做这样的事情:

            if (listBox1.GetSelected(0))
            {
                Properties.Settings.Default.Item0 = true;
            }
            else
            {
                Properties.Settings.Default.Item0 = false;
            }

            Properties.Settings.Default.Save();

它会保存它,下次我打开我的应用程序时,我会得到正确的保存值, 但我不希望每个项目的10个if语句效率低下

1 个答案:

答案 0 :(得分:2)

您可以按名称访问设置,如此。

Settings.Default["Item1"];

由于你的for循环中有命名约定Item + Incrementing Number,你可以这样做,

for (int i = 0; i < list.Count; i++)
{
    Settings.Default["Item" + i.ToString()] = listBox1.GetSelected(i);
}
Properties.Settings.Default.Save();