0

これは簡単なはずだと思いますが、理解できないようです。20個のテキストボックス(n1からn10およびc1からc10)のエントリを含む設定ファイルSettings1.settingsがあります。

現在、テキストボックスのテキストを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」に対処する適切な方法は何ですか?

ありがとうございました!!

4

3 に答える 3

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;
于 2012-11-13T16:36:44.930 に答える
0

bdeの提案は間違いなくそれを行うためのより良い方法ですが、のGetPropertyメソッドを使用することもできますType。これは、プロパティのコレクションを取得するために使用できます。次に、それらをループし、PropertyInfo.SetValueを使用してそれらを設定できます。

于 2012-11-13T16:44:33.930 に答える
0

ConfigurationManagerを使用してAppSettingsを読み取ることができます。これは、特定のキー(たとえば、名前が「n」または「c」で始まるキー)を照会できるNameValueCollectionです。n [1]にn1、n [2]からn2などへの参照が含まれるように、コントロールをコントロール配列にグループ化することもできます。

于 2012-11-13T16:47:04.847 に答える