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. OpenGL 使用GLFW创建全屏窗口

    OpenGL 使用GLFW创建全屏窗口 GLFW库里面的glfwCreateWindow()函数是用来创建窗口的函数. 这样函数的原型是: GLFWwindow* glfwCreateWindow(i ...

  2. 把Nutch爬虫部署到Hadoop集群上

    原文地址:http://cn.soulmachine.me/blog/20140204/ 把Nutch爬虫部署到Hadoop集群上 Feb 4th, 2014 | Comments 软件版本:Nutc ...

  3. Struts2学习第七课 ActionSupport

    com.opensymphony.xwork2.ActionSupport类是默认的Action类,如果某个Action节点没有配置class属性,则ActionSupport即为待执行的Action ...

  4. vivado中如何调用chipscope或者impact

    vivado中并没有集成chipscope和impact,所以需要安装ISE,安装完ISE后进行以下操作: 1)     选择环境变量中的系统变量,新建以下变量 XILINX             ...

  5. C#内存管理之托管堆与非托管堆( reprint )

    在 .NET Framework 中,内存中的资源(即所有二进制信息的集合)分为“托管资源”和“非托管资源”.托管资源必须接受 .NET Framework 的 CLR (通用语言运行时)的管理(诸如 ...

  6. C#结构体指针的定义及使用详解(intptr的用法)

    在解析C#结构体指针前,必须知道C#结构体是如何定义的.在c#中同样定义该结构体. C#结构体指针之C#结构体的定义: [StructLayout(LayoutKind.Sequential)] pu ...

  7. LENOVO服务器批量升级BMC固件

    需求:通过服务器远程管理IP批量升级IMM.UEFI固件 工具:asu64.ipmitool.iflash64.cdc_interface.sh 下载:http://pan.baidu.com/s/1 ...

  8. spark svm

    首先spark上的svm只能处理线性的,不能处理非线性的.其次spark上的svm求解过程与普通的不同.普通的是通过拉格朗日对偶,然后通过SMO方法求. 但是在spark上,则没有通过拉格朗日,而是直 ...

  9. DES加密解决算法

    /// <summary> /// DES加密算法 /// sKey为8位或16位 /// </summary> /// <param name="pToEnc ...

  10. 基于Canvas 实现图片转点阵图

    要实现什么 同事想做一张世界地图的背景图,但是网上找的图片都太low了.他想用那种密集的点阵组成的世界地图.作为程序员,想法当然是通过图片处理,识别像素点,然后生成新的图片. 目标是这样的: 实现思路 ...