在WPF应用程序中更新应用程序设置

时间:2012-02-07 10:05:00

标签: c# wpf app-config application-settings

我正在尝试使用下面的代码更新app.config文件中的值(该值在“属性”>“设置为应用程序作用域”中定义)

System.Configuration.Configuration configApp = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
MessageBox.Show(configApp.AppSettings.Settings.Count.ToString()); //this shows 0
configApp.AppSettings.Settings["PontajAdminPwd"].Value = "dsfs";
configApp.Save(ConfigurationSaveMode.Full);

但是它说configApp.AppSettings.Settings是空的......

这是我的app.config文件的一部分

<applicationSettings>
    <PontajWPF.Properties.Settings>
        <setting name="PontajAdminPwd" serializeAs="String">
            <value>696W3oybVP85szuiY2Qpiw==</value>
        </setting>
    </PontajWPF.Properties.Settings>
</applicationSettings>

我做错了什么?

谢谢

编辑1:我赶时间,所以我采用了这里提出的解决方案(手动更改app.config文件后直接访问文件 - 使用appSettings而不是applicationSettings):
http://www.longhorncorner.com/uploadfile/rahul4_saxena/update-app-config-key-value-at-run-time-in-wpf/

1 个答案:

答案 0 :(得分:3)

configApp.AppSettings.Settings.Count.ToString()这会尝试从<appSettings>部分读取设置,而不是<applicationSettings>。该文件的名称也应为app.config

在您的情况下,您需要使用Properties.Settings静态类,才能从applicationSettings访问您的设置。您可以尝试PontajWPF.Properties.Settings.Default.PontajAdminPwd

  

应用程序范围设置是只读的,只能通过在应用程序会话之间更改.exe.config文件来在设计时更改 < /强>

     但是,

用户范围设置可以在运行时写入,就像更改任何属性值一样。新值在应用程序会话期间保持不变。您可以通过调用Settings.Save方法在应用程序会话之间保留对用户设置的更改。这些设置保存在User.config文件中。

详细了解MSDN

希望这有帮助。