2013-07-09 138 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

相關問題