zoukankan      html  css  js  c++  java
  • 艾伟_转载:使用配置文件(.settings、.config)存储应用程序配置 狼人:

    image 引言

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

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

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

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

    基本使用方法

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

    image

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

     image

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

    image

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

    private void Form1_Load(object sender, EventArgs e)

    {

        numericUpDown1.Value = MyApp.Default.a;

        textBox1.Text = MyApp.Default.b;

        checkBox1.Checked = MyApp.Default.c;

    }

     

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)

    {

        MyApp.Default.a = numericUpDown1.Value;

        MyApp.Default.b = textBox1.Text;

        MyApp.Default.c = checkBox1.Checked;

        MyApp.Default.Save();

    }

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

    运行抓图:

    image

    复杂数据类型支持情况

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

    image

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

    读写复杂数据类型

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

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

    image

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

    image

    高亮部分为新增的代码。

    多次运行以测试:

    image

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

    “用户”和“应用程序”

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

    image

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

    image

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

    用户=可读写

    应用程序=只读

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

    数据被存在哪里?

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

    image

    结语

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

    下载示例项目:http://www.uushare.com/user/icesee/file/2017630

    下载本文的XPS版本:http://www.uushare.com/user/icesee/file/2017629

  • 相关阅读:
    java+opencv实现图像灰度化
    java实现高斯平滑
    hdu 3415 单调队列
    POJ 3368 Frequent values 线段树区间合并
    UVA 11795 Mega Man's Mission 状态DP
    UVA 11552 Fewest Flops DP
    UVA 10534 Wavio Sequence DP LIS
    UVA 1424 uvalive 4256 Salesmen 简单DP
    UVA 1099 uvalive 4794 Sharing Chocolate 状态DP
    UVA 1169uvalive 3983 Robotruck 单调队列优化DP
  • 原文地址:https://www.cnblogs.com/waw/p/2157127.html
Copyright © 2011-2022 走看看