2

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

这是一个简短的例子:

    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 语句效率低下

4

1 回答 1

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();
于 2013-07-09T15:27:57.797 回答