C# winform把新值写入app.config文件

来源:互联网 发布:w7 mysql更改密码 编辑:程序博客网 时间:2024/05/19 05:32

最简单的winform配置文件app.config如下:

<?xml version="1.0" encoding="utf-8"?><configuration>  <appSettings>    <add key="ftpServer" value="192.168.123.456" />    <add key="ftpUserName" value="hahaha" />    <add key="password" value="123456" />    <add key="localDefaultDirectory" value="E:/" />    <add key="remoteDefaultDirectory" value="/" />    <add key="nameList" value="123  456 789 10 11 12" />  </appSettings></configuration>

网上找的只能暂时把新设置的值加载进去,典型处理方法如下:

private void AccessAppSettings(){    //获取Configuration对象    Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);    //根据Key读取<add>元素的Value    string name = config.AppSettings.Settings["name"].Value;    //写入<add>元素的Value    config.AppSettings.Settings["name"].Value = "fx163";    //增加<add>元素    config.AppSettings.Settings.Add("url", "http://www.fx163.net");    //删除<add>元素    config.AppSettings.Settings.Remove("name");    //一定要记得保存,写不带参数的config.Save()也可以    config.Save(ConfigurationSaveMode.Modified);    //刷新,否则程序读取的还是之前的值(可能已装入内存)    System.Configuration.ConfigurationManager.RefreshSection("appSettings");}

但是回头去看app.config和exe.config,这两个xml文件都没变。这里提供一个直接把新值写入xml的方法:

private void butOk_Click(object sender, EventArgs e)        {            XmlDocument doc01 = new XmlDocument();            XmlDocument doc02 = new XmlDocument();            //获得配置文件的全路径              string  strFileName01 = AppDomain.CurrentDomain.BaseDirectory + "Winftp.exe.config";            string path = AppDomain.CurrentDomain.BaseDirectory;            DirectoryInfo dir = Directory.GetParent(path);            string strFileName02 = dir.Parent.Parent.FullName + "\\app.config";            doc01.Load(strFileName01);            doc02.Load(strFileName02);//'F:\work\Win7FTP\Win7FTP\Win7FTP\bin\Debugapp.config'.            //找出名称为“add”的所有元素              XmlNodeList nodes01 = doc01.GetElementsByTagName("add");            XmlNodeList nodes02 = doc02.GetElementsByTagName("add");            for (int i = 0; i < nodes01.Count; i++)            {                //获得将当前元素的key属性                  XmlAttribute att = nodes01[i].Attributes["key"];                //根据元素的第一个属性来判断当前的元素是不是目标元素                  if (att.Value == "ftpServer")                {                    //对目标元素中的第二个属性赋值                      att = nodes01[i].Attributes["value"];                    att.Value = this.txtHostName.Text.ToString();                    break;                }            }            for (int i = 0; i < nodes02.Count; i++)            {                //获得将当前元素的key属性                  XmlAttribute att = nodes02[i].Attributes["key"];                //根据元素的第一个属性来判断当前的元素是不是目标元素                  if (att.Value == "ftpServer")                {                    //对目标元素中的第二个属性赋值                      att = nodes02[i].Attributes["value"];                    att.Value = this.txtHostName.Text.ToString();                    break;                }            }            //保存上面的修改              doc01.Save(strFileName01);            doc01.Save(strFileName02);            System.Configuration.ConfigurationManager.RefreshSection("appSettings");        }
原创粉丝点击