C#读取App.config配置文件并修改

时间:2020-12-11 11:24:16

using System.Xml;//引用Xml的命名空间

读取App.config配置文件

 private static string SelectValueByKey(string strKey)
        {
             string result="";
            XmlDocument doc = new XmlDocument();
            //获得配置文件的全路径
            string strFileName = "../../App.config";//App.config位于根目录下
            doc.Load(strFileName);
            //找出名称为“add”的所有元素
            XmlNodeList nodes = doc.GetElementsByTagName("add");           
            for (int i = 0; i < nodes.Count; i++)
            {
                //获得将当前元素的key属性
                XmlAttribute att = nodes[i].Attributes["key"];
                //根据元素的第一个属性来判断当前的元素是不是目标元素
                if (att.Value == strKey)
                {
                    //对目标元素中的第二个属性赋值
                    XmlAttribute zf = nodes[i].Attributes["value"];
                    result=zf.Value;
                    break;
                }
            }
            //返回Value的值
            return result.ToString();
   }

修改App.config配置文件

private void SaveConfig(string ConnenctionString, string strKey)
        {
            XmlDocument doc = new XmlDocument();
            //获得配置文件的全路径
            string strFileName = "../../App.config";//App.config位于根目录下
            doc.Load(strFileName);
            //找出名称为“add”的所有元素
            XmlNodeList nodes = doc.GetElementsByTagName("add");
            for (int i = 0; i < nodes.Count; i++)
            {
                //获得将当前元素的key属性
                XmlAttribute att = nodes[i].Attributes["key"];
                //根据元素的第一个属性来判断当前的元素是不是目标元素
                if (att.Value == strKey)
                {
                    //对目标元素中的第二个属性赋值
                    att = nodes[i].Attributes["value"];
                    att.Value = ConnenctionString;
                    break;
                }
            }
            //保存上面的修改
            doc.Save(strFileName);
    }

保存按钮上鼠标单击的代码:

private void btnSave_Click(object sender, EventArgs e)
        {
            //服务器IP
            string IP = this.txtIP.Text.Trim();
            if (IP==string.Empty)
            {
                MessageBox.Show("请输入IP");
                this.txtIP.Focus();
                return;
            }
            //端口
           string DK = this.txtDK.Text.Trim();
            if (DK==string.Empty)
            {
                MessageBox.Show("请输入端口");
                this.txtDK.Focus();
                return;
            }
            //数据库名
            string sqlName = this.txtSqlName.Text.Trim();
            if (sqlName==string.Empty)
            {
                MessageBox.Show("请输入数据库名");
                this.txtSqlName.Focus();
                return;
            }
            //用户名
            string User = this.txtUser.Text.Trim();
            if (User==string.Empty)
            {
                MessageBox.Show("请输入用户名");
                this.txtUser.Focus();
                return;
            }
            //密码
            string pwd = this.txtPwd.Text.Trim();
            if (pwd==string.Empty)
            {
                MessageBox.Show("请输入密码"); 
            }

            //修改App.config文件(调用SaveConfig()方法来修改)
            SaveConfig(IP, "ServerIP");
            SaveConfig(DK, "port");
            SaveConfig(sqlName, "DataBase");
            SaveConfig(User, "user");
            SaveConfig(pwd, "password");
            MessageBox.Show("保存成功!");

 }

窗体头部加载代码:

private void FrmServer_Load(object sender, EventArgs e)
        {
            //在文本框备注里显示当前配置信息(方法一)
            this.txtIP.WatermarkText =SelectValueByKey("ServerIP");//服务器IP,用SelectValueByKey()方法来查询
            this.txtDK.WatermarkText =SelectValueByKey("port");//端口
            this.txtSqlName.WatermarkText =SelectValueByKey("DataBase");//数据库名
            this.txtUser.WatermarkText =SelectValueByKey("user");//用户名
            this.txtPwd.WatermarkText =SelectValueByKey("password");//密码

            //在文本框备注里显示当前配置信息(方法二)
            this.txtIP.WatermarkText =System.Configuration.ConfigurationManager.AppSettings["ServerIP"];//服务器IP
            this.txtDK.WatermarkText =System.Configuration.ConfigurationManager.AppSettings["port"];//端口
            this.txtSqlName.WatermarkText=System.Configuration.ConfigurationManager.AppSettings["DataBase"];//数据库名
            this.txtUser.WatermarkText =System.Configuration.ConfigurationManager.AppSettings["user"];//用户名
            this.txtPwd.WatermarkText =System.Configuration.ConfigurationManager.AppSettings["password"];//密码
        }