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 に答える