我使用configmanager时app.config没有更新

时间:2016-04-01 17:50:41

标签: c# winforms app-config configurationmanager

我有这些代码:

string theme = ConfigurationManager.AppSettings["Theme"];


private void ChangeTheme(string Name)
    {
        if(Name=="Light")
        {
            Form1.ActiveForm.BackColor = System.Drawing.Color.White;
            Form.ActiveForm.ForeColor = System.Drawing.Color.Black;
        }
        if (Name == "Dark")
        {
            Form1.ActiveForm.BackColor = System.Drawing.Color.Black;
            Form.ActiveForm.ForeColor = System.Drawing.Color.DarkOrange;
        }
        Configuration cfg = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        cfg.AppSettings.Settings["Theme"].Value = Name;
        cfg.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection("appSettings");
    }

我的app.config:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="Volume" value="7"/>
    <add key="Keyval" value="X"/>
    <add key="Theme" value="Light"/>
  </appSettings>
</configuration>

基本上,当我按下单选按钮时,它会更改主题并将字符串发送到changetheme(),但它不会在app.config中更新。

2 个答案:

答案 0 :(得分:0)

你是在调试中运行吗?

可能你看错了文件。调试visual studio时使用bin \ Debug中的配置文件,因此它不会从解决方案中更新App.config。

答案 1 :(得分:0)

我不使用==进行比较,而是使用字符串等于方法:

Name.Equals("Light")

虽然我敢打赌,这不是问题,但这是一种很好的做法,也许你很幸运,这就是问题所在。