WPF:在运行时更改配置文件的用户设置?

问题描述:

我想改变我的WPF应用程序中的一些配置文件的用户设置值,但它只能部分工作。值被正确改变,程序运行正常。我甚至可以重新启动程序,并且这个值仍然是我改变它的值。问题是,当我打开.exe.config文件的值仍然是旧值。即时通讯使用此代码更改值:WPF:在运行时更改配置文件的用户设置?

Properties.Settings.Default.ProjectNumber = varTestExample; 
Properties.Settings.Default.Save(); 

哪里能节省代码保存更改以及如何/哪里的程序读取i的值已经运行此代码后? 如果我运行一个干净版本的程序,ProjectNumber值是从.exe.config文件中正确取得的,如果我更改了配置文件中的值,那么当我运行程序时也会发生更改。但只要我运行上面的代码,程序不会读取配置文件中的值。为什么?

设置按每个用户保存。您应该查看C:\Documents and Settings\[UserName]\...(WinXP)或C:\Users\...(Vista/7)中的Application Data文件夹。

不保存任何设置,程序将使用默认配置,即您的*.exe.config文件。但是,只要保存更改,就会创建一个用户特定的设置文件,并在下次启动时加载该文件。我认为,这应该解释你的行为。

+0

这是现货。 – ChrisF 2010-03-16 09:49:33

用户保存的设置存储在用户的AppData目录下。通常是C:\用户\\应用程序数据\本地\\

存储在.exe.config文件与该值默认值

希望(你在VS的设置编辑器中设置),它可以帮助

Properties.Settings只涉及基于用户的设置,应用程序设置是一个完全独立的一系列设置,如果您使用ClickOnce Installs,将会覆盖这些设置 - 因此请小心在此存储的配置。

private void updateDataInConfigFile() 
    { 
     Xml xmlConfigFile = new Xml(ProjectName.sSettingFileName); 
     xmlConfigFile.SetValue("My Setting Section", "MyFirstSetting", MySettingValue); 
} 
    private void GetDataFromConfigFile() 
    { 
     Xml xmlConfigFile = new Xml(MyProject.sSettingFileName); 

     txtAccessDriverId.Text = xmlConfigFile.GetValue("Mys Setting Section", "MyFirstSetting").ToString(); 
}