如何在设置文件中循环显示名称?

时间:2012-11-13 16:32:45

标签: c# loops controls identifier

我觉得这应该很容易,但我似乎无法弄明白。我有一个设置文件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”的正确方法是什么?

谢谢!

3 个答案:

答案 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的引用,依此类推。