C# 配置文件 Appconfig
WinForm或WPF应用程序有时候需要保存用户的一些配置就要用到配置文件,而微软为我们的应用程序提供了Application Configuration File,就是应用程序配置文件,可以很方便的访问和修改应用程序的配置。此文中我们以Winform的数据库服务器配置为例。
工具/原料
- Microsoft Visual Studio 2013
- Widows8.1
方法/步骤
右键点击你的项目--Add--New Item--选择Application Configuration File,请保持默认名称,否则你的程序读取App.config时得到的值是空的。

打开App.config,添加应用程序设置的5个键值
first_run: 应用程序第一次正常启动
server: 服务器IP
database: 数据库名称
uid: 数据库用户名
pwd: 数据库密码
数据库服务器配置在程序首次启动时的值都是空的

右键点击项目中的应用,添加一个引用System.Configuration,然后再你需要访问配置文件的类顶部添加 using System.Configuration 引用

读取App.config,判断是不是第一次运行,如果是第一次运行就启动配置窗体,如果不是,就读取上次配置成功的数据库服务器参数,中间的部分判断代码省略,下面的代码主要是读取
bool isFirstRun = bool.Parse(ConfigurationManager.AppSettings["first_run"]);
string server = ConfigurationManager.AppSettings["server"];string database = ConfigurationManager.AppSettings["database"];string uid = ConfigurationManager.AppSettings["uid"];string pwd = ConfigurationManager.AppSettings["pwd"];
创建一个窗体提供用户输入数据库服务器的配置项

点击配置窗体的尝试连接,如果连接成功就表明用户输入的配置项是正确的,那么就把这些配置项更新保存到App.config,一下是更新保存的代码
//读取配置窗体中用户输入的配置
string server = txtServer.Text.Trim();string database = txtDatabase.Text.Trim();string uid = txtUid.Text.Trim();string pwd = txtPwd.Text;
//将用户的输入的配置更新保存到App.config
Configuration cfa = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);cfa.AppSettings.Settings["first_run"].Value = "False";cfa.AppSettings.Settings["server"].Value = server;cfa.AppSettings.Settings["database"].Value = database;cfa.AppSettings.Settings["uid"].Value = uid;cfa.AppSettings.Settings["pwd"].Value = pwd;cfa.Save();ConfigurationManager.RefreshSection("appSettings");
ConfigurationManager.RefreshSection("appSettings");这一句的代码作用是为了即刻更新并可以使用App.config的新值,否则更新的配置只有等到下次程序启动时才可以使用。
特别重要:
按以上的步骤更新App.config时发现更新没效果,为什么呢?因为在程序调试阶段,App.config并不会按我们预想的那样更新。
所以呢,需要把应用程序的EXE可执行文件和配置文件以及你程序依赖的一些dll等文件复制到另外一个新的文件夹,比如E盘下新建的一个text文件夹,然后再运行进行更新等操作就正常了。

C# 配置文件 Appconfig的更多相关文章
- 读取配置文件-AppConfig
using System.Xml; using System.IO; using System; namespace Framework.Common { /// <summary> // ...
- ADO.NET学习系列(三)----做一个登录案例
总体思路.根据用户输入的用户名和密码,来判断,和数据库里面存的是不是一样,如果一样就表明登录成功,否则就登录失败. 方案一: 1.select* from 表名 where username=&quo ...
- 自己动手写框架——IoC的实现
先看看 IoC百度百科 优化过程 namespace Test { class Program { static void Main(string[] args) { //场景 某公司客服要回访一些客 ...
- Spring 中 IoC 容器简介
IoC 是一种通过描述来生成或者获取对象的技术,可以说 Spring 是一种基于 IoC 容器编程的框架 在一个系统中可以生成各种对象,并且这些对象都需要进行管理.为了描述这些对象关系,我们需要一个容 ...
- 学习Spring.Net:1.简单的应用之控制台
1.开始. 2.新建一个控制台,我们新建一个SpringNetTest类. using System; using System.Collections.Generic; using System.L ...
- 分布式改造剧集三:Ehcache分布式改造
第三集:分布式Ehcache缓存改造 前言 好久没有写博客了,大有半途而废的趋势.忙不是借口,这个好习惯还是要继续坚持.前面我承诺的第一期的DIY分布式,是时候上终篇了---DIY分布式缓存. 探 ...
- Spring AOP——Spring 中面向切面编程
前面两篇文章记录了 Spring IOC 的相关知识,本文记录 Spring 中的另一特性 AOP 相关知识. 部分参考资料: <Spring实战(第4版)> <轻量级 JavaEE ...
- Spring IOC 总结
IOC 简介 IOC是(Inversion of Control,控制反转)的简写.Spring提供IOC容器,将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的的过度程序耦合.它由DI( ...
- spring boot 发布自动生成svn版本号
通过Jenkins构建发布spring boot项目时,常常有需求,需要把Svn的版本号更新到项目的版本上,通过有两种解决方案: 1. 通过shell命令对配置文件中的指定字符进行替换, 如: 配置文 ...
随机推荐
- Teigha的BlockTableRecord获取方法
Teigha的db(即database)可以有很多BlockTableRecord,可以用 OdDbBlockTablePtr blkTbl = db->getBlockTableId().op ...
- Region服务器工作原理
- UVA - 1230
https://vjudge.net/problem/UVA-1230 费马小定理优化快速幂 #include <iostream> #include <cstdio> #in ...
- 廖雪峰Java10加密与安全-4加密算法-1对称加密算法
1.对称加密算法 加密和解密使用同一个密钥,例如WinRAR. WinRAR在对文件进行打包的时候,可以设置一个密码,在解压的时候需要使用同样的密码才能正确的解压. 加密:encrypt(key,me ...
- [转]用HttpSessionListener与HttpSessionBindingListener实现在线人数统计
原文链接:http://www.cnblogs.com/shencheng/archive/2011/01/07/1930227.html 下午比较闲(其实今天都很闲),想了一下在线人数统计方面的实现 ...
- 位操作(求[a, b] 中二进制位为1的个数最多的数)
传送门 题意:求区间[a, b]中二进制位为1的个数最多的那个数,如果存在多解,则输出最小的那个.(0 <= a <= b) 关键: 对一个数a可以利用 a | (a + 1) 来将a的二 ...
- SignalR 2.0 入门与提高 转载https://www.cnblogs.com/vance/p/SignalR.html
SignalR 2.0 最近整理了SignalR2.0 部分知识点,原文翻译,由于自己是土鳖,翻译得不好的地方,欢迎指正!仅供各位初学者学习! 第一节. 入门ASP.NET SignalR2.0 1. ...
- 学习Python笔记---变量和简单数据类型
首先声明,这个是个人在自学的一些笔记,因为是小白,刚接触Python,之前也没有过类似的经验,所以很多东西对于其他人来说可能是小白级别的,写出来没有其他的意思就是自己整理然后记录一下,顺便分享出来,而 ...
- Eureka配置问题
在使用Spring Cloud做微服务开发中,经常会使用Eureka Server作为注册中心,如果配置不当可能会导致一些不可预期的异常信息.以下是我最近遇到的因为忽略了配置eureka.client ...
- leetcode 843. Guess the Word
我做过的第一个 interactive problem 给一个候选词列表,每次猜测可以猜里面的词,会返回猜中匹配的个数, 可以猜10次, 加上随机化策略之后几乎可以一定通过测试(尽管不是100%) c ...