8

アプリ設定で値を簡単に読み書きできるようにするクラスを作成しました。

public static class SettingsManager
    {
        public static string ComplexValidationsString
        {
            get { return (string)Properties.Settings.Default["ComplexValidations"]; }
            set
            {
                Properties.Settings.Default["ComplexValidations"] = value;
                Properties.Settings.Default.Save();
            }
        }

問題は、値が実際には保存されていないことです。つまり、アプリケーションを終了して再度実行しても、値は変更されません。保存された値が閉じてから再度開くまで保持されるようにするにはどうすればよいですか?

4

4 に答える 4

11

設定範囲はアプリケーションではなくユーザーにする必要があります

于 2009-07-23T10:39:27.347 に答える
5

確認する必要があります

Properties.Settings.Default.Properties["ComplexValidations"].IsReadOnly

それはおそらく本当です、これはローランドが「アプリケーションスコープ」で意味することです。保存はサイレントに失敗します。プロジェクト|プロパティ|設定の3列目を見てください。

于 2009-07-23T10:49:54.160 に答える
2

変更が保存されていませんか?binフォルダー内の[ProgramName].exe.configファイルは更新されません。使用される実際のファイルは通常、に入れられC:\Documents and Settings\[user]\Local Settings\Application Data\[company name]\[application].exe[hash string]\[version]\user.configます。このようなことを試したとき、これが更新されているファイルであることに気付くのに少し時間がかかりました。

于 2009-07-23T10:44:20.067 に答える
0

ユーザー設定をテストしたところ、このコンソール アプリを 2 回実行すると保持されます。

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine(Settings1.Default.Setting);
        Console.ReadLine();
        Settings1.Default.Setting = "A value different from app.config's";
        Settings1.Default.Save();
    }
}

試してみてください。1分もかかりません。

于 2009-10-20T01:34:52.917 に答える