【问题标题】:How do I loop though names in the Settings file?如何遍历设置文件中的名称?
【发布时间】:2012-11-13 16:32:44
【问题描述】:

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

谢谢!!

【问题讨论】:

    标签: c# loops controls identifier


    【解决方案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;
    

    【讨论】:

    • Settings1.Default["n" + count.ToString()] = n.Text; 这正是我想要的。谢谢!我也会考虑改变类型
    【解决方案2】:

    bde 的建议无疑是更好的方法,但是,您可以使用TypeGetProperty 方法。这可用于获取属性的集合。然后你可以遍历它们并使用PropertyInfo.SetValue 来设置它们。

    【讨论】:

      【解决方案3】:

      您可以使用 ConfigurationManager 来读取 AppSettings。这是一个 NameValueCollection,您可以查询特定键(例如,名称以“n”或“c”开头的键)。您还可以将控件分组到控件数组中,以便 n[1] 包含对 n1 的引用、n[2] 对 n2 的引用等等。

      【讨论】:

        猜你喜欢
        • 2022-07-16
        • 2015-10-11
        • 1970-01-01
        • 2015-03-01
        • 2021-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-18
        相关资源
        最近更新 更多