2013-07-09 105 views
2

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

下面是简单的例子:

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(); 

它将保存它,下次我打开我的应用程序,我会得到正确的保存值, 但我不wa nt无效,每个项目有10条if语句

+0

你可以改变你的for循环内脏列出[我] = listBox1.GetSelected(我) – Jonesopolis

+0

并以相同的方式,最后一位为Properties.Settings.Default.Item0 = listBox1.GetSelected(0); – Jonesopolis

+0

谢谢,但它不回答我的问题。问题是如何将这些值保存到设置文件中,并将其与列表一起使用。 – inside

回答

2

您可以按名称访问设置,如下所示。

Settings.Default["Item1"]; 

既然你的命名约定项目+在递增的数字for循环,你能做到这一点,

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

完美,谢谢! – inside

+0

Np!乐意效劳! – Bearcat9425

相关问题