WinForm或WPF应用程序有时候需要保存用户的一些配置就要用到配置文件,而微软为我们的应用程序提供了Application Configuration File,就是应用程序配置文件,可以很方便的访问和修改应用程序的配置。此文中我们以Winform的数据库服务器配置为例。

工具/原料

  • Microsoft Visual Studio 2013
  • Widows8.1

方法/步骤

  1.  

    右键点击你的项目--Add--New Item--选择Application Configuration File,请保持默认名称,否则你的程序读取App.config时得到的值是空的。

  2.  

    打开App.config,添加应用程序设置的5个键值

    first_run: 应用程序第一次正常启动

    server: 服务器IP

    database: 数据库名称

    uid: 数据库用户名

    pwd: 数据库密码

    数据库服务器配置在程序首次启动时的值都是空的

  3.  

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

  4.  

    读取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"];

  5.  

    创建一个窗体提供用户输入数据库服务器的配置项

  6.  

    点击配置窗体的尝试连接,如果连接成功就表明用户输入的配置项是正确的,那么就把这些配置项更新保存到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文件夹,然后再运行进行更新等操作就正常了。

最新文章

  1. Javascript中JSON对象的操作以及遍历key/value
  2. BZOJ 4581: [Usaco2016 Open]Field Reduction
  3. SQLAchemy
  4. PHPCMS V9多站点[站群功能]动态设置与静态设置子站内容URL
  5. phonegap+html5开发app的一些总结
  6. freemarker小例子
  7. C++变量的存储类别与作用域
  8. [iOS]SourceTree+oschina实现代码远程托管
  9. Cygwin解决Windows远程登录linux服务器
  10. Effective Java2读书笔记-创建和销毁对象(四)
  11. 波折yosemite下载过程
  12. mysql优化----第一篇:综述
  13. 微信小程序之bindtap事件绑定传参
  14. WPF中矢量图制作和引用
  15. 【逆向笔记】OD工具使用-逆向TraceMe.exe
  16. TensorFlow练习24: GANs-生成对抗网络 (生成明星脸)
  17. java接口定义的静态方法和默认如何在类实现的时候使用
  18. using指令都用了这么多年了,其实还真没懂!
  19. CSS3实战之box-shadow篇
  20. shell学习笔记之变量(一)

热门文章

  1. BeanUtils工具类copyProperties方法缺点及解决
  2. CAS添加验证码功能
  3. hive报错( Non-Partition column appears in the partition specification)
  4. 不同版本springboot端点开启方法
  5. @Restcontroller与@controller区别
  6. 2019-5-21-C#-命令行如何静默调用-del-删除文件
  7. Windows API 第21篇 DeleteVolumeMountPoint 删除挂载点
  8. 【心无旁骛】vue-ts-daily
  9. 最小费用最大流——EK+SPFA
  10. 大数据处理也要安全--关于MaxCompute的安全科普