Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

WPF: Changing config file user settings at runtime?

Tags:

c#

wpf

app-config

I'm trying to change some config file user settings values in my WPF application, but its only working partly. The value is changed correctly and the program runs fine with the value. I can even restart the program and the value is still the one i changed it to. The problem is that when i open the .exe.config file the value is still the old value. Im using this code to change the value:

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

Where does this save code save the changes and how/where does the program read the value after i have run this code? If i run a clean version of the program the ProjectNumber value is correctly taken from the .exe.config file and if i change the value in the config file it is also change when i run the program. But as soon as i run the above code the program is not reading the value from the config file. Why?

like image 948
Poku Avatar asked Dec 23 '22 04:12

Poku


2 Answers

Settings are saved on a per-user basis. You should look into the Application Data folder in C:\Documents and Settings\[UserName]\... (WinXP) or in C:\Users\... (Vista/7).

Without saving any settings, the program uses the default configuration which is your *.exe.config file. But as soon as you save the changes, a user-specific settings file is created, and it loads this file at the next startup. I think, this should explain your behavior.

like image 192
gehho Avatar answered Jan 06 '23 17:01

gehho


The Properties.Settings only refer to the user based setting, the Application Settings are a completely separate bunch of settings, which will get overwritten if you use ClickOnce Installs - so be carefull what configs you store there.

 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();
}
like image 36
Traci Avatar answered Jan 06 '23 16:01

Traci