0

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

这段代码:

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

但不返回任何东西

4

1 回答 1

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();
于 2013-04-03T00:07:34.703 回答