如何在应用程序打开时更改应用程序设置(设置)?

问题描述:

我写了一个类,应该让我轻松地阅读和应用程序设置写值:如何在应用程序打开时更改应用程序设置(设置)?

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

问题是值是不是真的得救了,我的意思是,当我离开它没有改变应用程序并再次运行它。我能做些什么来确保保存的值在关闭和重新打开之间仍然存在?

+1

这应该是保存,我没有看到它在我眼里有任何问题。 – ThePower 2009-07-23 10:26:46

您应该检查

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

这可能是真的,这是罗兰“适用范围”的意思。保存将失败默默。看看项目|属性|设置,第3列。

设置范围必须是用户而不是应用程序

+0

你是什么意思? – agnieszka 2009-07-23 10:43:05

+0

在设置Settings.designer.cs之前添加 [global :: System.Configuration.UserScopedSettingAttribute()] 或者只需更改settings1.settings – Woland 2009-07-23 10:56:52

您确定它没有保存更改吗? bin文件夹中的[ProgramName] .exe.config文件将不会更新。所用的acutal文件通常放在C:\Documents and Settings\[user]\Local Settings\Application Data\[company name]\[application].exe[hash string]\[version]\user.config。我知道当我尝试这种事情时,我花了一段时间才意识到这是正在更新的文件。

我只是测试的用户设置,如果你运行该控制台应用程序两次是坚持:

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

只是尝试一下。它不会花一分钟。