2010-03-16 128 views
3

我想改變我的WPF應用程序中的一些配置文件的用戶設置值,但它只能部分工作。值被正確改變,程序運行正常。我甚至可以重新啓動程序,並且這個值仍然是我改變它的值。問題是,當我打開.exe.config文件的值仍然是舊值。即時通訊使用此代碼更改值:WPF:在運行時更改配置文件的用戶設置?

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

哪裏能節省代碼保存更改以及如何/哪裏的程序讀取i的值已經運行此代碼後? 如果我運行一個乾淨版本的程序,ProjectNumber值是從.exe.config文件中正確取得的,如果我更改了配置文件中的值,那麼當我運行程序時也會發生更改。但只要我運行上面的代碼,程序不會讀取配置文件中的值。爲什麼?

回答

8

設置按每個用戶保存。您應該查看C:\Documents and Settings\[UserName]\...(WinXP)或C:\Users\...(Vista/7)中的Application Data文件夾。

不保存任何設置,程序將使用默認配置,即您的*.exe.config文件。但是,只要保存更改,就會創建一個用戶特定的設置文件,並在下次啓動時加載該文件。我認爲,這應該解釋你的行爲。

+0

這是現貨。 – ChrisF 2010-03-16 09:49:33

0

用戶保存的設置存儲在用戶的AppData目錄下。通常是C:\用戶\\應用程序數據\本地\\

存儲在.exe.config文件與該值默認值

希望(你在VS的設置編輯器中設置),它可以幫助

2

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