我觉得这应该很容易,但我似乎无法弄明白。我有一个设置文件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 + count”的正确方法是什么?
谢谢!
答案 0 :(得分: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;
答案 1 :(得分:0)
bde的建议无疑是更好的方法,但是,您可以使用Type
的{{1}}方法。这可用于获取属性集合。然后,您可以遍历它们并使用GetProperty进行设置。
答案 2 :(得分:0)
您可以使用ConfigurationManager读取AppSettings。这是一个NameValueCollection,您可以查询特定键(例如,名称以“n”或“c”开头的键)。您还可以将控件分组到控件数组中,以便n [1]包含对n1,n [2]到n2的引用,依此类推。