引言

我不知大家早先是如何保存应用程序配置,以备下次打开时使用的,反正我开始学.Net的时候就去研究序列化,以二进制或XML格式的序列化来保存应用程序配置。这样每次都要建立单独的配置类,并书写读写配置代码,相当麻烦。

期间也看了看.config文件的读写方式,感觉还是很麻烦,不如自己序列化来的踏实。

后来才猛然发现微软早提供好了settings,用以定义.config文件内容,并生成相应的强类型类,使用起来极其方便~,感觉就像在火星居住了半辈子突然发现还有地球这好地方*_*~

鉴于网上settings方面的资料不多、不详,我就以此文来介绍一下基本的用法,让小鸟们少走我那条破路,老鸟请直接从上空滑翔而过即可。

基本使用方法

首先建立一个WinForm项目,设计这样一个窗体:

通过“添加新项”功能添加一个MyApp.settings:

在打开的数据表格中做如下设置:

这样就设置好了a、b、c三个不同类型的配置变量,现在就可以在程序中使用它们了:

privatevoid Form1_Load(object sender, EventArgs e)

{

numericUpDown1.Value = MyApp.Default.a;

textBox1.Text = MyApp.Default.b;

checkBox1.Checked = MyApp.Default.c;

}

privatevoid Form1_FormClosing(object sender, FormClosingEventArgs e)

{

MyApp.Default.a = numericUpDown1.Value;

MyApp.Default.b = textBox1.Text;

MyApp.Default.c = checkBox1.Checked;

MyApp.Default.Save();

}

通过上面的代码就可以在窗体开闭时分别加载、保存配置了。

运行抓图:

复杂数据类型支持情况

settings支持存储一些较为复杂的数据,比如Color、Size等类型,可以自行选择:

但并不是所有类型都可以支持,比如FileInfo类型就没有,泛型也没有,自定义类型更是不受支持的,如果需要存储这些特殊类型,就得用其他配置方案了。

读写复杂数据类型

我们以ArrayList类型为例,通过它在原程序的基础上实现记录每次关闭程序时间的功能。

首先添加一个配置变量d,其类型为System.Collections.ArrayList:

在窗体中增加一个ListBoxt,然后修改后台代码为:

高亮部分为新增的代码。

多次运行以测试:

可以看到每次的程序关闭时间都被记录并显示。

“用户”和“应用程序”

你可能注意到数据表格中“范围”这里全是“用户”:

如果改成另外一个选项,即“应用程序”会怎样呢?

报错了,我们的配置变量变成只读的了,所以这里可以简单地把它们理解为:

用户=可读写

应用程序=只读

“应用程序”选项应当是用于设定一些程序运行所必须的重要变量,比如导航网址、数学运算参数等,这些配置项如果让用户篡改就会出问题了,所以要只读。

数据被存在哪里?

你可能会发现编译后在Debug目录中有个“SettingTest.exe.config”,但无论如何操作程序,这个配置文件里始终都是描述的默认配置。

其实数据是被存在了“C:\Users\SkyD\AppData\Local\”目录中(我这是Windows7,XP或以下版本可能不是这里)

我在“C:\Users\SkyD\AppData\Local\SettingTest\SettingTest.vshost.exe_Url_ffofch2tvz5bil2xbhdayqbnqwppy2ce\1.0.0.0”这个目录中找到了配置文件(user.config),这是其描述的配置信息:

结语

虽然settings无法实现对一些复杂类型及自定义类型的支持,但是在多数情况下,用它来存储程序配置已是绰绰有余了,在够用的前提下,不要重复造轮子啦。

下载示例项目:

下载本文的XPS版本:

linux用户的配置文件保存在哪里,使用配置文件(.settings、.config)存储应用程序配置...相关推荐

  1. 简述linux下用户与组相关的配置文件,Linux用户和群组管理的主要配置文件

    一. 用户和群组的类型 1.Linux用户账户的类型 Linux下的用户可以分为三类: 超级用户.系统用户.普通用户. 1)超级用户root root用户就是超级用户.系统管理员,UID为0. 2)系 ...

  2. 每个 Linux 用户都应该知道的命令行技巧

    每个 Linux 用户都应该知道的命令行技巧 原创 2015-09-11 伯乐在线 程序员的那些事 [伯乐在线导读]:有网友在问答网站Quora上提问:"有哪些省时小技巧,是每个Linux用 ...

  3. Linux用户配置文件(第二版)

    /etc/passwd文件剖析 文件格式: root:x:0:0:root:/root:/bin/bash 用户名:密码位:UID:GID[缺省组ID]:注释性的描述信息:宿主目录:shell[7部分 ...

  4. Linux用户和组相关的配置文件

    Linux用户和组相关的配置文件: /etc/passwd:用户及其属性信息(名称.UID.基本组ID等等): /etc/group:组及其属性信息: /etc/shadow:用户密码及其相关属性: ...

  5. linux用户的主要配置文件,Linux用户和组的主要配置文件及其相关命令

    Linux用户和组的主要配置文件: /etc/passwd:用户及其属性信息 /etc/shadow用户密码及其相关属性 /etc/group组及其属性信息 etc/gshadow组密码及其相关属性 ...

  6. linux用户和用户配置文件(nobody)

      在Linux系统中有一些用户帐户是在系统安装后就有的,它们是用来完成特定任务的,比如nobody和ftp等,我们访问LinuxSir.Org的网页程序,就是nobody用户(相当于Windows系 ...

  7. Linux用户与用户组配置文件详解

    Linux用户与用户组配置文件详解 出发点 Linux是一个多用户多任务的操作系统,用户需要使用系统,就必须在系统中拥有属于自己的账号. 作为一个Linux管理员,对用户增删改查等操作当然离不开用户与 ...

  8. 六 linux用户,群组以及配置文件

    一.怎样在linux中创建,删除用户及群组管里 用户 1.创建一个新用户(useradd命令使用) a)useradd命令功能介绍:创建一个新用户b)useradd命令常用选项:1) –u:指定用户的 ...

  9. 史上最详细 Linux 用户与用户组知识

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 来源:CU技术社区 ID:ChinaUnix2013 1.用户和用户组文件 在 linux 中 ...

最新文章

  1. Java 反射 方法调用
  2. tree view 後台編寫
  3. Java中反射的三种常用方式
  4. DVWA---文件包含
  5. shutil模块 python_python之模块之shutil模块
  6. access 命令不符 等级考试_大学四年不白过,大家都在考这些(计算机等级考试电子书)...
  7. GridView实战一:自定义分页、排序、修改、插入、删除
  8. 100%在CSS中是什么意思?
  9. Ecliplse安装tomcat插件
  10. reids实现分布式锁两种方式,单机,集群
  11. 一文精讲Wireshark的抓包和分析
  12. python 和vba在财务上_Excel函数和VBA技术在财务工作中的应用
  13. 计算机视觉教程(第2版)1-8章期末复习
  14. FPGA | Vivado 查看最大工作频率(Fmax)
  15. editor上传视频无法播放的问题
  16. php批量解密decoder,IonCube v8.3 Decoder解密工具
  17. win10企业版无法访问共享文件夹
  18. 【鼠标右键点击桌面图标时,出现资源管理器未响应】
  19. python技巧:如何使用Python对音频进行特征提取?
  20. SWFUpload使用

热门文章

  1. CentOS 6.4下操作kdump执行过程
  2. 详解pager-taglib-2.0配合SSH分页
  3. 计算机技术基础 VB 答案,《计算机技术基础(VB)》武汉理工大学20春作业一
  4. 内网安装nginx+keepalived环境配置及简单使用
  5. python中 r是什么意思_python中rb含义理解
  6. cesium 经纬度绘制点_NCL绘制2016年1号台风(Nepartak)
  7. android 前置摄像头预览时 镜像翻转_全面屏时代,原来手机前置摄像头都隐藏着一些缺点,你发现了吗?...
  8. [转载] Java之继承
  9. oracle创建用户名了,oracle创建用户名
  10. python信号量怎么用_Python3.X 线程中信号量的使用方法示例