在属性设置中保存数组仅返回最后一个对象

时间:2013-04-03 00:06:00

标签: c# winforms visual-studio-2010

我有一个标签数组,我想保存此标签的文本,以便在加载表单时,相同的信息会加载到相同的标签中

此代码:

    for (int i = 0; i < count; ++i)
    {
        Properties.Settings.Default.label = lblArray[i].Text;
        Properties.Settings.Default.Save();
    }

继续覆盖最后一个对象,因为该属性不是它自己的数组。有没有让Properties.Settings.Default.label数组保存,然后正确加载数据?

更新

RE :(下面给出的答案)

再次加载:

for (int i = 0; i < countHeadWaiters; ++i)
           {
               lblHeadWaiterHours[i].Text = Properties.Settings.Default.label[i];
           }

但不会返回任何内容

1 个答案:

答案 0 :(得分:0)

遍历数组并在每次迭代时覆盖存储在Properties.Settings.Default.label的先前值:

Properties.Settings.Default.label = lblArray[i].Text;

您可以加入值并将其写入Settings。这不是最好的解决方案,如果碰巧在文本中有分隔符,可能无效,但是对于简单的风格很有用。

Properties.Settings.Default.label = string.Joint(Environment.NewLine, lblArray.Select(l => l.Text));
Properties.Settings.Default.Save();

你应该将你的名字命名为labelsText

或者您可以将label设置更改为StringCollection,以便

 var strings = new StringCollection();

 lblArray.Select(l => l.Text).ToList().ForEach(text => strings.Add(text));

 Properties.Settings.Default.label = strings;
 Properties.Settings.Default.Save();