ExeConfigurationFileMap map = new ExeConfigurationFileMap();
            map.ExeConfigFilename = @"F:\App1.config"; ;
            Configuration config = ConfigurationManager.OpenMappedExeConfiguration(map, ConfigurationUserLevel.None);
            string connstr = config.ConnectionStrings.ConnectionStrings["connStr"].ConnectionString;
            MessageBox.Show(connstr);
            string key = config.AppSettings.Settings["key"].Value;
            MessageBox.Show(key);

How To Read/Write Another App.Config File
To open another App.Config file you need to create an instance of ExeConfigurationFileMap.
The purpose of this class is not that obvious but we can use it to open
another file. Once you have learned this little trick the rest is easy.
Here is a little example that does open an file by specifying it's
name.

ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap();

fileMap.ExeConfigFilename = @"ConfigTest.exe.config";  // relative path names possible

// Open another config file

Configuration config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None);

// read/write from it as usual

ConfigurationSection mySection = config.GetSection("mySection");

config.SectionGroups.Clear(); // make changes to it

config.Save(ConfigurationSaveMode.Full);  // Save changes


The Microsoft Enterprise Library way
has a shorthand utility class for this. It is the
FileConfigurationSource which does hide those strange things. Tom Hollander has a nice post explaining this already so I will not repeat the same at my blog.

Another Way to read/write configuration values

A
more advanced way to store our settings is to create our own
ConfigurationSection. This makes our configuration values
distinguishable from other configuration values inside the App.config
file. It is a little more complicated since you have to write your own
class which content is de/serialized to the App.config file. I am going
to show you at first the config file and explain then what code you need
to write to read/save these settings to your application configuration
file.

App.Config  (Taken from the Enterprise Library Configuration Migration QuickStart Sample)

<configuration>

<configSections>

<section name="EditorSettings" type="ConfigurationMigrationQuickStart.EditorFontData,
ConfigurationMigrationQuickStart, Version=1.1.0.0, Culture=neutral,
PublicKeyToken=null" />

</configSections>

<EditorSettings name="Verdana" size="24" style="2" />

</configuration>

Most App.config files which contain config data have a <configSections> element where many <section> are defined. The name attribute of an section (in this example "EditorSettings") tells the config system that the class ConfigurationMigrationQuickStart.EditorFontData is responsible for the ser/deserialization of the node <EditorSettings>. The EditorFontData class derives from the ConfigurationSection class and uses the ConfigurationProperty attribute to create a mapping between the properties to de/serialize and the attribute names in names in the App.Config file.

using System.Text;

using System.Configuration;

public class EditorFontData : ConfigurationSection

{

public EditorFontData()

{

}

[ConfigurationProperty("name")]

public string Name

{

get { return (string)this["name"]; }

set{ this["name"] = value; }

}

[ConfigurationProperty("size")]

public float Size

{

get{ return (float)this["size"]; }

set{ this["size"] = value; }

}

[ConfigurationProperty("style")]

public int Style

{

get { return (int)this["style"]; }

set{ this["style"] = value; }

}

}

To access an EditorFontData instance with values from your config file you only need to call

EditorFontData configData = ConfigurationManager.GetSection("EditorSettings") as EditorFontData;

Please note that the System.Configuration.ConfigurationManager
returns only objects with read only properties. Subsequent calls to
GetSection use the cached instance inside the ConfigurationManager. This
constraint requires you to create every time a new instance of you e.g.
EditorFontData object if you want to write to the App.config file. You
even cannot add an object with the same name twice to the
System.Configuration.Configuration object. Now comes the fun part: To
edit an existing App.config file you have to remove your config object
and then add a new object instance to the Configuration object. Only
then the Save will succeed.

EditorFontData configData = new EditorFontData();

configData.Name = "Arial";

configData.Size = 20;

configData.Style = 2;

// Write the new configuration data to the XML file

Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

config.Sections.Remove("EditorSettings");

config.Sections.Add("EditorSettings", configData);

config.Save();

To get your hands on the System.Configuration.Configuration
object you have to open your App.Config file. The .NET config mechanism
supports setting inheritance from the Machine.config from which all
settings are inherited. Next comes the App.Config file which is selected
by the ConfigurationUserLevel.None file.

http://geekswithblogs.net/akraus1/articles/64871.aspx

Winform 读取 指定\另一个\其他\任意 配置文件的更多相关文章

  1. WinForm读取指定的config文件的内容

    config文件的使用 一.缘起 最近做项目开始使用C#,因为以前一直使用的是C++,因此面向对象思想方面的知识还是比较全面的,反而是因没有经过完整.系统的.Net方面知识的系统学习,经常被一些在C# ...

  2. C#读取指定路径下的Config配置文件

    ExeConfigurationFileMap map = new ExeConfigurationFileMap(); map.ExeConfigFilename = @"F:\App1. ...

  3. 读取指定文件夹下的全部文件,可通过正则进行过滤,返回文件路径数组 -- 基于node的一个函数

    var fs = require('fs'); // 模板文件夹路径 var templateDirectory = '../src'; //相对于当前文件的相对路径 //var templateDi ...

  4. Shell 命令行,实现一个获取任意位数的随机密码的脚本

    Shell 命令行,实现一个获取任意位数的随机密码的脚本 每次我们想要获得一个密码的时候都很头疼,于是我之前自己用nodejs写了一个 Shell 脚本.这两天在学习 bash Shell 所以,想用 ...

  5. 将所有程序设置XML集中到一个单独XML配置文件的方法:使用appSettings元素的configSource元素

    在.NET程序中,程序的配置文件默认都会放在程序根目录下的web.config(网站程序)或App.config(控制台等程序),在该配置文件中可以定义若干程序配置信息. 在此以网站程序为例,首先将下 ...

  6. iOS案例:读取指定txt文件,并把文件中的内容输出出来

    用到的是NSString中的initWithContentsOfFile: encoding方法 // // main.m // 读取指定文件并输出内容 // // Created by Apple ...

  7. Java读取WEB-INF目录下的properties配置文件

    如何在Java代码中读取WEB-INF目录下的properties配置文件,下文给出了一个解决方案. 我们习惯将一些配置信息写在配置文件中,比如将数据库的配置信息URL.User和Password写在 ...

  8. java web实现读取指定盘符下的图像(二)

    之前写了一篇文章是关于如何读取指定盘符下的图片,虽然功能可以实现,但是使用的是I/O流的方式,效率不高.现在发现还有一个更好的办法,使用也更加的方便. 我们知道,当我们的图片是放在tomcat下web ...

  9. 写一个简单的配置文件和日志管理(shell)

    最近在做一个Linux系统方案的设计,写了一个之前升级服务程序的配置和日志管理. 共4个文件,服务端一个UpdateServer.conf配置文件和一个UpdateServer脚本,客户端一个Upda ...

随机推荐

  1. Pig Latin JOIN (inner) 与JOIN (outer)的区别

    1.内连接(自然连接): 只有两个表相匹配的行才能在结果集中出现 2.外连接: 包括 (1)左外连接(左边的表不加限制) (2)右外连接(右边的表不加限制) (3)全外连接(左右两表都不加限制) 3. ...

  2. window.parent ,window.top,window.self 详解及parent和opener的区别

    window.parent ,window.top,window.self 详解 在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层fr ...

  3. 6.(转载)SSRF漏洞挖掘经验

    SSRF 漏洞的寻找 一.从WEB功能上寻找 我们从上面的概述可以看出,SSRF是由于服务端获取其他服务器的相关信息的功能中形成的,因此我们大可以 列举几种在web 应用中常见的从服务端获取其他服务器 ...

  4. 14. CTF综合靶机渗透(七)

    靶机说明 NinevehV0.3.7z是一个难度为初级到中级的BooT2Root/CTF挑战. VM虚机配置有静态IP地址(192.168.0.150) 目标 Boot to root:获得root权 ...

  5. Http客户端再封装

    Android系统上推荐的Http客户端从Apache变成[HttpURLConnection],主要理由包括 * 不过因为UrlConnection这组接口时间较早(Java 1.0), 接口的设计 ...

  6. CocoaPods常用操作命令

    查看镜像: gem sources -l 删除镜像 gem sources --remove https://rubygems.org/ 添加镜像 gem sources -a https://gem ...

  7. Unity 点乘与叉乘 计算敌人位置

    点乘:表示两个向量夹角 a*b=|a| * |b| * cos(ab),判断敌人在前后方 叉乘:表示两向量的法线

  8. java知识点积累(二)

    4.条件运算符(三元运算符): String type = score<60?"不及格":"及格"; int i = (string=="hel ...

  9. 《OD学hadoop》20160903某旅游网项目实战

    一.大数据的落地点 1.数据出售 数据商城:以卖数据为公司的核心业务 2. 数据分析 百度统计 友盟 GA IBM analysis 3.搜索引擎 4. 推荐系统 mahout 百分比 5.精准营销 ...

  10. heap 堆

    实现了交换.向上维护,向下维护的原子功能,其它插入.删除.修改的功能应该不在话下. 于是有了代码:(luogu3378模板题) // luogu-judger-enable-o2 #include & ...