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

我刚刚测试了一个用户设置,如果您运行此控制台应用程序两次,它会持续存在:

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();
    }
}

试试看。不会花一分钟。

于 2009-10-20T01:34:52.917 回答