无法在app.config上写入设置(或者不显示任何更改)

我正在.net framework 4.5上创建一个应用程序

每当我想加载应用程序配置值(appSettings部分)并写入更改时,如果我刷新该部分,我看不到我的更改。 我做错了什么? 我该如何解决?

private void LoadConfig() { NameValueCollection appSettings = ConfigurationManager.AppSettings; for (int i = 0; i < appSettings.Count; i++) { switch (appSettings.GetKey(i)) { case "initialCatalog": txtInitialCatalog.Text = appSettings.GetValues(i)[0]; break; case "dataSource": txtDatasource.Text = appSettings.GetValues(i)[0]; break; case "userName": txtUsername.Text = appSettings.GetValues(i)[0]; break; case "password": txtPassword.Text = appSettings.GetValues(i)[0]; break; case "portalUrl": txtUrl.Text = appSettings.GetValues(i)[0]; break; } } } private void SaveConfig() { System.Configuration.Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); KeyValueConfigurationCollection appSettings = config.AppSettings.Settings; appSettings["initialCatalog"].Value = txtInitialCatalog.Text; appSettings["dataSource"].Value = txtDatasource.Text; appSettings["userName"].Value = txtUsername.Text; appSettings["password"].Value = txtPassword.Text; appSettings["portalUrl"].Value = txtUrl.Text; config.Save(ConfigurationSaveMode.Modified); ConfigurationManager.RefreshSection("appSettings"); } 

App.config文件

              

当表单被激活时我调用ReadConfig()并在按下按钮时保存数据(确定或应用)我关闭应用程序我重新运行它但没有对app.config文件进行任何更改

有任何想法吗???

我认为正在发生的事情是您正在使用Visual Studio进行测试,它将App.Config复制到您的Debug / Release目录并将其重命名为YourApplication.vshost.exe.config,每次启动应用程序时都会重置它。 尝试在Visual Studio外部运行可执行文件,该文件将使用YourApplication.exe.config文件,看看它是否适合您。 如果我在Visual Studio之外运行它,您的代码对我有效并保留对应用程序重新启动的更改。

通常,我这样做:

  ... config.AppSettings.Settings.Remove("TextBoxNumber"); config.AppSettings.Settings.Add("TextBoxNumber", ""); 

它工作正常。 我想这是因为你的一个密钥还没有在app.config中。 您需要删除/添加它(如上面的代码),或者首先在app.config中创建密钥。

====================更新

试试这个:

  config.AppSettings.Settings["initialCatalog"].Value = txtInitialCatalog.Text; 

代替

  appSettings["initialCatalog"].Value = txtInitialCatalog.Text; 

有什么区别?