即将操作的app.config文件内容如下

<?xml version="1.0" encoding="utf-8"?>
<configuration>
<!--使用自定义节点必须添加如下项, 且如下项只能在Configuration中-->
<configSections>
<sectionGroup name="MySettings">
<section name="MySet" type="System.Configuration.NameValueSectionHandler"/>
</sectionGroup>
</configSections> <connectionStrings>
<!--无密码access数据库访问方式-->
<add name="connAcc" connectionString="Provider=Microsoft.Jet.OleDb.4.0;Data Source=db.mdb"/>
<!--有密码access数据库访问方式-->
<add name="conn" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= ./MyPasswordProtected.MDB;Jet OLEDB:Database Password=MyPassword;"/>
<add name="ConnectionString" connectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source= ./MyPasswordProtected.MDB;Jet OLEDB:Database Password=MyPassword;"/>
</connectionStrings> <appSettings>
<!--设置替换汉字-->
<add key="splitChar" value="@"/>
<!--设置替换汉字-->
<add key="splitCharNew" value="囧"/>
<!--设置每次记忆的边框-->
<add key="biankuang" value="几字"/>
</appSettings> <MySettings>
<MySet>
<add key="8公分纸竖1" value="2.7,23,-10,0.76,230"/>
<add key="8公分纸竖2" value="2,23,30,0.81,230"/>
<add key ="8公分纸横" value ="1.5,23,-10,0.76,220"/>
<add key ="彩带" value="10,23,30,0.79,220"/>
<add key ="11公分竖" value="4,23,45,0.79,340"/>
<add key ="11公分横" value ="4,34,30,0.76,340"/>
</MySet>
</MySettings>
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/></startup></configuration>

OperatAppConfig类内容如下, 我觉得使用微软的ConfigurationManager 在没有自定义节点时非常方便, 但是如果涉及到自定义节点后将会比较麻烦, 所以莫不如直接把app.config当做xml文件, 直接操作(需要注意的是程序在运行时其实执行的是appName.exe.config文件, 并非app.config文件):

 /// <summary>
/// 对程序运行中的appConfig进行读写
/// </summary>
public class OperatAppConfig
{
public static bool DelXmlNode(string appNode, string key)
{
try
{
string strPath = System.Windows.Forms.Application.ExecutablePath + ".config";
XmlDocument xDoc = new XmlDocument();
xDoc.Load(strPath); XmlNode xNode = xDoc.DocumentElement.SelectSingleNode(appNode); foreach (XmlNode item in xNode.ChildNodes )
{
// System.Console.WriteLine(item.Attributes[0].Value);
if (item.Attributes[0].Value == key)
{
xNode.RemoveChild(item);
}
} xDoc.Save(strPath);
return true;
}
catch (System.Exception ex)
{
return false;
}
} /// <summary>
/// 对指定的节点添加子节点
/// </summary>
/// <param name="appNode">指定的节点名称一般为//MySettings//MySet格式</param>
/// <param name="key">这个方法只添加add, 所以这里需要给出key和value</param>
/// <param name="value">这个方法只添加add, 所以这里需要给出key和value</param>
/// <returns></returns>
public static bool AddXmlNode(string appNode,string key,string value)
{
try
{
string strPath = System.Windows.Forms.Application.ExecutablePath + ".config";
XmlDocument xDoc = new XmlDocument();
xDoc.Load(strPath); XmlNode xNode = xDoc.DocumentElement.SelectSingleNode(appNode); XmlElement newElement = xDoc.CreateElement("add");
// newElement.InnerText = "black";
newElement.SetAttribute("key", key);//添加一个带有属性的节点信息
newElement.SetAttribute("value", value);
xNode.AppendChild(newElement); //追加到xNode下
//保存更改
xDoc.Save(strPath);
return true;
}
catch (System.Exception ex)
{
return false;
}
} /// <summary>
/// 获取某个指定节点下的所有key
/// </summary>
/// <param name="appKey"></param>
/// <param name="appValue"></param>
public static System.Collections.Generic.List<string> GetKeys(string appNode)
{
System.Collections.Generic.List<string> xmlNodes = new System.Collections.Generic.List<string>();
try
{ XmlDocument xDoc = new XmlDocument();
//要注意的是使用ExecutablePath所获取的一般是 appName.exe.config文件中的内容, 而不是appName.config中的内容
xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config"); XmlNode xNode = xDoc.SelectSingleNode(appNode); foreach (XmlElement item in xNode)
{
xmlNodes.Add(item.Attributes[0].Value + "囧" + item.Attributes[1].Value);
}
return xmlNodes;
}
catch
{
xmlNodes.Clear();
xmlNodes.Add("默认值囧2,23,0,0.9,220");
return xmlNodes;
}
} /// <summary>
/// 根据键设置值
/// </summary>
/// <param name="appKey"></param>
/// <param name="appValue"></param>
public static void SetAppConfig(string appKey, string appValue)
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config"); var xNode = xDoc.SelectSingleNode("//appSettings"); var xElem = (XmlElement)xNode.SelectSingleNode("//add[@key='" + appKey + "']");
if (xElem != null)
xElem.SetAttribute("value", appValue);
else
{
var xNewElem = xDoc.CreateElement("add");
xNewElem.SetAttribute("key", appKey);
xNewElem.SetAttribute("value", appValue);
xNode.AppendChild(xNewElem);
}
xDoc.Save(System.Windows.Forms.Application.ExecutablePath + ".config");
} /// <summary>
/// 根据键查找值
/// </summary>
/// <param name="appKey"></param>
/// <returns></returns>
public static string GetAppConfig(string appKey)
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config"); var xNode = xDoc.SelectSingleNode("//appSettings"); var xElem = (XmlElement)xNode.SelectSingleNode("//add[@key='" + appKey + "']"); if (xElem != null)
{
return xElem.Attributes["value"].Value;
}
return string.Empty;
} /// <summary>
/// 根据键查找值
/// </summary>
/// <param name="appKey"></param>
/// <returns></returns>
public static char GetAppConfigChar(string appKey)
{
try
{
XmlDocument xDoc = new XmlDocument();
xDoc.Load(System.Windows.Forms.Application.ExecutablePath + ".config"); var xNode = xDoc.SelectSingleNode("//appSettings"); var xElem = (XmlElement)xNode.SelectSingleNode("//add[@key='" + appKey + "']"); if (xElem != null)
{
return XmlConvert.ToChar(xElem.Attributes["value"].Value);
}
}
catch { return '囧';
}
return '囧';
}
}

调用:

//获取此节点下所有的key
OperatAppConfig.GetKeys("//MySettings//MySet");
//删除此节点下指定key的节点
bool isDel = Common.OperatAppConfig.DelXmlNode("//MySettings//MySet", this.txtZKName.Text.Trim());
//在指定节点下新增节点
bool isAdd = Common.OperatAppConfig.AddXmlNode("//MySettings//MySet", this.txtZKName.Text.Trim(), strValue);
//根据键找值
OperatAppConfig.GetAppConfigChar("splitCharNew")

C#简单操作app.config文件的更多相关文章

  1. 第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获得连接字符串

    第19课-数据库开发及ado.net ADO.NET--SQLDataReader使用.SqlProFiler演示.ADoNET连接池,参数化查询.SQLHelper .通过App.Config文件获 ...

  2. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  3. C# App.config文件的使用

    App.config文件 1. 配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序 ...

  4. WPF程序中App.Config文件的读与写

    WPF程序中的App.Config文件是我们应用程序中经常使用的一种配置文件,System.Configuration.dll文件中提供了大量的读写的配置,所以它是一种高效的程序配置方式,那么今天我就 ...

  5. C#项目中关于多个程序集下App.config文件的问题

    在项目中我们会经常用到App.config文件,有的是自动生成的,比如引用webservice.wcf服务时生成:也有手动建立的配置文件直接默认名就为app.config.这些配置有的保存当前程序集用 ...

  6. 操作App.config的类(转载)

    http://www.cnblogs.com/yaojiji/archive/2007/12/17/1003191.html 操作App.config的类 public class DoConfig  ...

  7. 配置文件——App.config文件读取和修改

    作为普通的xml文件读取的话,首先就要知道怎么寻找文件的路径.我们知道一般配置文件就在跟可执行exe文件在同一目录下,且仅仅在名称后面添加了一个.config 因此,可以用Application.Ex ...

  8. WPF C#之读取并修改App.config文件

    原文:WPF C#之读取并修改App.config文件 简单介绍App.config App.config文件一般是存放数据库连接字符串的.  下面来简单介绍一下App.config文件的修改和更新. ...

  9. Visual Studio 2013 Unit Test Project App.config文件设置方法

    开放中经常会要做单元测试,新的项目又没有单元测试项目,怎么才能搭建一个单元测试项目呢? 下面跟我四步走,如有错误之处,还请指正! 1.添加项目 2.添加配置文件 新建app.config文件,注意不是 ...

随机推荐

  1. GBDT 总结文档

    在做阿里的o2o优惠券预测的时候学习了GBDT.听闻GBDT的威力,自然要学习学习. 接下来从以下几个方面记录下我对于GBDT的理解. GBDT的用途,优势 GBDT的结构和算法流程 GBDT如何训练 ...

  2. UnsupportedOperationException

    java不支持该功能,多见于, Arrays.asList() ,然后使用remove和add方法.     因为asarraylist的集合是一个转化来的集合,它的大小是固定的.不能进行长度修改. ...

  3. uva 10125 二分

    https://vjudge.net/problem/UVA-10125 和之前做过的一道a+b+c=X的问题类似,不过这个要求多了a+b+c=d-->a+b=d-c  且abcd互不相等 我们 ...

  4. axios 讲解 和vue搭建使用

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. ios上传图片遇见了一个TimeoutError(DOM Exception 23)异常

    TimeoutError(DOM Exception 23):The operation timed out 百度了下,没发现解决办法

  6. EditPlus保存时不生成bak文件(转)

    如何设置EditPlus保存时不生成bak文件 EditPlus是一个强大的编辑工具,不单单是编辑文字强大,很多的刚开始学习编程语言的初学者会选择它,例如html,js,php,java.小编刚开始学 ...

  7. 使用RateLimiter完成简单的大流量限流,抢购秒杀限流

    RateLimiter是guava提供的基于令牌桶算法的实现类,可以非常简单的完成限流特技,并且根据系统的实际情况来调整生成token的速率. 通常可应用于抢购限流防止冲垮系统:限制某接口.服务单位时 ...

  8. 前端之JavaScript 补充

    1. BOM window location.href = "https://www.sogo.com" location.reload() // 重新加载当前页 location ...

  9. I.MX6 PHY fixup 调用流程 hacking

    /********************************************************************************** * I.MX6 PHY fixu ...

  10. Set Matrix Zeros

    Question: Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in pla ...