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

本文关键字:返回 最后 一个对象 数组 保存 属性 设置 | 更新日期: 2023-09-27 18:07:04

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

这个代码:

    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];
           }

但是不返回任何东西

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

遍历数组,每次迭代重写存储在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();