winform读取配置文件App.config
2017-12-20 10:23
579 查看
有时候一些用户的配置需要写入在本地,不能每次程序启动都让用户重新设置一下吧。
下面先说基本用法:
里面的appSettings节点和子节点就是我们添加上去的
然后这样就可以读到数据了:
这样修改数据:
实际上他设置的时候并没有真正写入xml,而是修改了内存中的值而已!
参考文章:https://www.cnblogs.com/zfanlong1314/p/3623622.html
下面先说基本用法:
1、创建winform项目之后自动会生成App.config文件,如果默认没有就对项目右键-新建项-配置文件
这个文件创建后自动就有的,如果没有就新建一个,我们可以往里面添加需要的数据:<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" /> </startup> <appSettings> <add key="key1" value="hello"/> <add key="key2" value="world!"/> </appSettings> </configuration>
里面的appSettings节点和子节点就是我们添加上去的
2、读写
项目的引用增加System.Configuration,然后在cs文件引入System.Configuration然后这样就可以读到数据了:
string key1 = ConfigurationManager.AppSettings["key1"]; Debug.WriteLine("key1=" + key1);
这样修改数据:
ConfigurationManager.AppSettings.Set("key1","new hello!"); Debug.WriteLine("new-key1=" + ConfigurationManager.AppSettings["key1"]);一切看起来都非常简单,没有什么问题,打印出来显示都是正确的。
实际上他设置的时候并没有真正写入xml,而是修改了内存中的值而已!
3、正确的做法应该是按照对待一个普通的xml来进行读写操作,代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; using System.Xml; namespace TestConfig { class ConfigSettings { private ConfigSettings() { } public static string ReadSetting(string key) { //不建议通过这种自带的方式进行读取;如果手动修改了配置文件,则不会第二次读取的时候,依旧是内存中的值。可以通过XML方式进行读取。 //return ConfigurationSettings.AppSettings[key]; XmlDocument doc = loadConfigDocument(); XmlNode node = doc.SelectSingleNode("//appSettings"); if (node == null) throw new InvalidOperationException("appSettings section not found in config file."); try { XmlElement elem = (XmlElement)node.SelectSingleNode(string.Format("//add[@key='{0}']", key)); if (elem != null) { return elem.GetAttribute("value"); } } catch { throw; } return ""; } public static void WriteSetting(string key, string value) { XmlDocument doc = loadConfigDocument(); XmlNode node = doc.SelectSingleNode("//appSettings"); if (node == null) throw new InvalidOperationException("appSettings section not found in config file."); try { XmlElement elem = (XmlElement)node.SelectSingleNode(string.Format("//add[@key='{0}']", key)); if (elem != null) { elem.SetAttribute("value", value); } else { elem = doc.CreateElement("add"); elem.SetAttribute("key", key); elem.SetAttribute("value", value); node.AppendChild(elem); } doc.Save(getConfigFilePath()); } catch { throw; } } public static void RemoveSetting(string key) { XmlDocument doc = loadConfigDocument(); XmlNode node = doc.SelectSingleNode("//appSettings"); try { if (node == null) throw new InvalidOperationException("appSettings section not found in config file."); else { node.RemoveChild(node.SelectSingleNode(string.Format("//add[@key='{0}']", key))); doc.Save(getConfigFilePath()); } } catch(NullReferenceException e) { throw new Exception(string.Format("The key {0} does not exist.", key), e); } } private static XmlDocument loadConfigDocument() { XmlDocument doc = null; try { doc = new XmlDocument(); doc.Load(getConfigFilePath()); return doc; } catch (System.IO.FileNotFoundException e) { throw new Exception("No configuration file found.", e); } } private static string getConfigFilePath() { return Assembly.GetExecutingAssembly().Location + ".config"; } } }
参考文章:https://www.cnblogs.com/zfanlong1314/p/3623622.html
相关文章推荐
- winform程序读取和改写配置文件App.config元素的值
- winform程序读取和改写配置文件App.config元素的值
- winform程序读取和改写配置文件App.config元素的值
- winform程序读取和改写配置文件App.config元素的值
- winform程序读取和改写配置文件App.config元素的值
- C# winForm读取配置文件 App.config
- winform中读取配置文件App.config的一些事
- winform程序读取和改写配置文件App.config元素的值
- winform程序读取和改写配置文件App.config元素的值
- winform程序读取和改写配置文件App.config元素的值
- winform程序读取和改写配置文件App.config元素的值
- winform程序读取和改写配置文件App.config元素的值
- winform读取app.config.配置文件
- winform程序读取和改写配置文件App.config元素的值
- WinForm修改App.config配置文件功能
- c#Winform程序调用app.config文件配置数据库连接字符串
- C# 读取app.config配置文件 节点键值,提示 "配置系统未能初始化" 错误的解决方案
- C# 读取app.config配置文件 节点键值,提示 "配置系统未能初始化" 错误的解决方案
- winform 程序的配置文件——App.config(转)
- 配置文件——App.config文件读取和修改