2012-11-13 49 views
0

我有一種感覺,這應該很容易,但我似乎無法弄清楚。我有一個設置文件Settings1.settings,它具有20個文本框(n1到n10和c1到c10)的條目。如何循環設置文件中的名稱?

目前,我省文本框的文本設置文件上Form1_FormClosing像這樣:

Settings1.Default.n1 = n1.Text; 
Settings1.Default.n2 = n2.Text; 
... 
Settings1.Default.n10 = n10.Text; 

Settings1.Default.c1 = c1.Text; 
Settings1.Default.c2 = c2.Text; 
... 
Settings1.Default.c10 = c10.Text; 

我怎麼會做一個循環相似的地方?我的想法是這樣,但顯然它不工作:

int count = 1 
while (count < 11) 
{ 
    Control n = panel2.Controls.Find("n" + count.ToString(), true).Single(); 
    Settings1.Default.n = n.Text; //Settings1.Default.n is an invalid statement ... 

    Control c = panel2.Controls.Find("c" + count.ToString(), true).Single(); 
    Settings1.Default.c = c.Text; //Settings1.Default.c is an invalid statement ... 

    count++; 
} 

什麼是解決「Settings1.Default.n +數」的正確方法?

謝謝!

回答

1

我建議改變你的設置「n」和「C」的類型爲「System.Collections.Specialized.StringCollection」和處理它像一個普通的列表或數組對象,像:

Settings1.Default.n.Clear() 
Settings1.Default.c.Clear() 
int count = 1 
while (count < 11) 
{ 
    Control n = panel2.Controls.Find("n" + count.ToString(), true).Single(); 
    Settings1.Default.n.Add(n.Text); 

    Control c = panel2.Controls.Find("c" + count.ToString(), true).Single(); 
    Settings1.Default.c.Add(c.Text); 

    count++; 
} 

另外,我想你也可以通過串訪問設置的條目是這樣的:

Settings1.Default["n" + count.ToString()] = n.Text; 
+0

'Settings1.Default [「n」+ count.ToString()] = n.Text;'這正是我所期待的。謝謝!我也會研究改變類型 –

0

BDE的建議無疑是更好的方式來做到這一點,但是,你可以使用的TypeGetProperty方法。這可以用來獲取一組屬性。然後你可以遍歷它們並使用PropertyInfo.SetValue來設置它們。

0

您可以使用ConfigurationManager讀取AppSettings。這是一個NameValueCollection,您可以查詢特定的鍵(例如,名稱以「n」或「c」開頭的鍵)。您也可以將控件分組到控件數組中,以便n [1]包含對n1,n [2]至n2的引用等等。

相關問題