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

c12b8915c491d67e6d6e52b9a47ff279.png引言

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

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

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

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

基本使用方法

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

472a466f90f1aa1a88e20da29b9b8441.png

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

9f30d1b7222eeabc002d89d01eff97e9.png

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

ee3b4a4b111fb89cdcf74d1fdd471c7e.png

这样就设置好了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();

}

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

运行抓图:

cdda3ca538edf522423a4fad80be32b8.png

复杂数据类型支持情况

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

fa6edd4ab199c53468a5f24842ac4d93.png

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

读写复杂数据类型

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

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

f19384b17b38baffbc91506ead7369c5.png

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

f28408501b949e95866dd6c12418fbb6.png

高亮部分为新增的代码。

多次运行以测试:

dfa4f74919583dd5ee226417ab106b97.png

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

“用户”和“应用程序”

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

46d4c219e0d5f41ffd0fc5b50b72c228.png

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

9cac9bed39daf1dd431d5c8b5a4ed994.png

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

用户=可读写

应用程序=只读

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

数据被存在哪里?

你可能会发现编译后在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),这是其描述的配置信息:

cb9efdaa430ce213dac9204540baba4a.png

结语

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

下载示例项目:

下载本文的XPS版本:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/551102.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python如何画图设置坐标轴_python matplotlib坐标轴设置的方法

在使用matplotlib模块时画坐标图时,往往需要对坐标轴设置很多参数,这些参数包括横纵坐标轴范围、坐标轴刻度大小、坐标轴名称等在matplotlib中包含了很多函数,用来对这些参数进行设置。我们可以对坐标轴进行设置,设置坐标轴的范围…

linux比较厉害的运维项目,Linux运维项目实战系列

ORACLE 博客文章目录(2015-05-27更新)从接触ORACLE到深入学习,已有好几年了,虽然写的博客不多,质量也参差不齐,但是,它却是成长的历程的点点滴滴的一个见证,见证了我在这条路上的寻寻觅觅,朝圣的心路历程,现在将ORACLE方面的博客整理 ...Login控件尝试新建we…

awk 内嵌正则 提取字符串_使用awk提取字符串中的数字或字母

1.提取字符串中的数字$ echo dsFUs34tg*fs5a%8ar%$# |awk -F "" {for(i1;i<NF;i){if ($i ~ /[[:digit:]]/){str$istr1(str1 str)}}print str1}输出3458或$ echo dsFUs34tg*fs5a%8ar%$# |awk -F "" {for(i1;i<NF;i){if ($i ~ /[0-9]/){str$istr1(str1…

mysql中字符串拼接函数_MySQL字符串连接函数

一、CONCAT(str1,str2,…)返回结果为连接参数产生的字符串。如有任何一个参数为NULL &#xff0c;则返回值为 NULL。select concat(s_id, "--", s_bar_code) from t_storage_order_detail WHERE s_sn LIKE %R2016091200002% LIMIT 0, 1000;-------------------------…

云终端linux系统,让同方安全的云终端运行于Linux系统之上(二)

4、显示驱动与云终端显示相关的硬件包括多层控制器(MLC)及显示控制器(DPC)。MLC对应的修改的程序是mlc.c、mlc.h、main.c,DPC对应修改的程序为dpc_config.h、dpc_ioctl.h及main.c。修改主要涉及MLC顶层的初始设置、显示LOGO设置、及系统默认显示分辨率的设置、及与Pollux硬件相…

4列变成5列 datatable_云南美食界“5巨头”,谁才是NO.1?你家乡的那道菜也在列...

每个城市都有自己盛产的食材&#xff0c;最终也被制作成几代都传延至今的美食&#xff0c;这便是美食的传承。今天小编就来说说云南美食&#xff0c;下面这云南美食界“5巨头”&#xff0c;谁才是你心里的NO.1&#xff1f;你家乡的那道菜也在列哦~云南大理&#xff1a;白族泥鳅…

linux+基因组字符替换,liftover基因组版本直接的coordinate转换

下载地址:http://hgdownload.cse.ucsc.edu/admin/exe/使用方法:【从hg38转到hg19】因为主流的基因组版本还是hg19&#xff0c;但是时代在进步&#xff0c;已经有很多信息都是以hg38的形式公布出来的了。比如&#xff0c;我下载了pfam.df这个protein domain注释文件&#xff0c;…

elinput内容过长显示悬浮框_excel中一直被忽视的名称框,用好了也能提高效率

在excel左上角功能区下方&#xff0c;有一个名称框(下图红框中的部分)。大部分朋友应该没注意过这个地方有什么作用&#xff0c;或者仅仅知道名称框中会显示单元格的位置&#xff0c;因此在操作中这项功能无法表现出其真正的效果。本文就为大家介绍一下关于名称框的一些实用功能…

linux 漏洞 poc,CVE-2017-11176: 一步一步linux内核漏洞利用 (二)(PoC)

使第二次循环中的fget()返回NULL到目前为止&#xff0c;在用户态下满足了触发漏洞的三个条件之一。TODO:使netlink_attachskb()返回1[DONE]exp线程解除阻塞使第二次fget()调用返回NULL在本节中&#xff0c;将尝试使第二次fget()调用返回NULL。这会使得在第二个循环期间跳到“退…

同步轨道进入过程_“收官之星”定点成功!北斗三号卫星全部进入长管模式

◎ 徐新芳 科技日报记者 付毅飞6月30日14时15分&#xff0c;北斗三号全球卫星导航系统最后一颗组网卫星成功定点于距离地面约36000公里的地球同步轨道&#xff0c;顺利进入长期运行管理模式。卫星有效载荷已完成开通&#xff0c;经过遥测数据判读&#xff0c;星载基准频率合成器…

将当前的head推送到远程_Git 通俗易懂系列 三、远程仓库和标签

远程仓库git remote :列出每个远程库的简短名字。如&#xff1a;origin。git remote -v &#xff1a;显示对应的克隆地址&#xff0c;如&#xff1a;originhttp://gitlab.xxx.corp/xxx.git 添加远程库&#xff1a;git remote add pb git://github.com/xxx.gitpb 指代对应的仓库…

linux中cv调用摄像头,ubuntu中opencv调用摄像头

ubuntu中opencv调用摄像头ubuntu中opencv调用摄像头文章目录一、Ubuntu中安装opencv二、关于Linux如何开启摄像头1.安装VMvareTools&#xff0c;这个是真的强&#xff0c;解决了很多常遇到的问题&#xff0c;比如Linux和Windows无法交互粘贴复制的问题。2.要保证Linux这边能开启…

为什么只有奇次谐波_关于开关电源谐波失真,这有一份测量分析方法经验分享!...

无论是从保护电力系统的安全还是从保护用电设备和人身的安全来看&#xff0c;严格控制并限定电流谐波含量&#xff0c;以减少谐波污染造成的危害已成为人们的共识。总谐波失真THD与功率因数 PF 的关系市面上很多的 LED 驱动电源&#xff0c;其输入电路采用简单的桥式整流器和电…

c语言程序设计平时作业代刷,C语言程序设计——小学生口算刷题系统

程序函数关系图函数功能及全局变量介绍代码中已有详细注释的地方不再进行解释。全局变量Cut( )函数此函数用于分割界面&#xff0c;使界面更为美观。Start( )函数此函数集成了开始菜单&#xff0c;年级的输入&#xff0c;为了营造一个快乐而刺激的刷题体验&#xff0c;程序与用…

机器人出魔切还是三相_工业机器人常见故障和修理方法

机械手常见故障和修理方法 1.先动口再动手对于有故障的电气设备&#xff0c;不应急于动手&#xff0c;应先询问产生故障的前后经过及故障现象。对于生疏的设备&#xff0c;还应先熟悉电路原理和结构特点&#xff0c;遵守相应规则。拆卸前要充分熟悉每个电气部件的功能、位置、连…

字符串转内存c语言,【一起学C】C语言面试题必考:字符串操作函数,内存操作函数实现...

本帖最后由 奉聪 于 2017-1-25 14:54 编辑*******前言*******我数一下&#xff0c;我发了几个帖子&#xff0c;1、2、3&#xff1f;哈哈哈&#xff0c;没几个哈&#xff0c;感谢吾爱&#xff0c;让我学到了很多&#xff0c;乐于分享&#xff0c;共同进步&#xff01;最近也是在…

matlab 图像显著性检测ft_全局对比度的图像显著性检测算法

点击上方蓝字关注我们星标或者置顶【OpenCV学堂】干货与教程第一时间送达&#xff01;显著性检测概念显著性就是可以快速引起你注意的对象或者物体&#xff0c;在图像或者视频中显著性检测的结果往往是图像或者视频中对象&#xff0c;在神经学科中显著性检测被描述为注意力机制…

在c51语言的程序中 注释一般采用,【判断题】在 C51 语言的程序中,注释一般采用 /* */ 和 // 来实现。 (3.0分)...

当ab&#xff1c;0时&#xff0c;化简a2b的结果是()A&#xff0e;&#xff0d;abB&#xff0e;a&#xff0d;bC&#xff0e;&#xff0d;a&#xff0d;bD&#xff0e;ab(&#xff0d;5)2的化简结果为()A&#xff0e;25B&#xff0e;5C&#xff0e;&#xff0d;5D&#xff0e;&a…

修改所有列_哪些数据库是行存储?哪些是列存储?有什么区别?

大多数数据库系统存储一组数据记录&#xff0c;这些记录由表中的列和行组成。字段是列和行的交集&#xff1a;某种类型的单个值。属于同一列的字段通常具有相同的数据类型。例如&#xff0c;如果我们定义了一个包含用户数据的表&#xff0c;那么所有的用户名都将是相同的类型&a…

函数指针定积分C语言,急!!!利用函数指针变量编写一个求定积分的通用函数,...

急&#xff01;&#xff01;&#xff01;利用函数指针变量编写一个求定积分的通用函数&#xff0c;答案:4 信息版本&#xff1a;手机版解决时间 2021-05-05 09:17已解决2021-05-05 02:15用它分别求5个函数的定积分:每次需要求定积分的函数是不一样的。可以编写一个求定积分的通…