Winform配置文件分类及使用

以前只用过xml配置文件,最近项目需要使用配置文件,才开始学习配置文件的分类及使用,具体如下。

1.Properties-Settings.settings

winform项目下的Properties中有Settings.settings文件,双击即可打开文件,如图:

 

1.1解释说明

  • 名称(Name):相当于变量名称一样。
  • 类型(Type):配置的Settings的类型
  • 范围(Scope):用户和应用程序,用户则运行时可更改,应用程序则运行时不可更改。

    范围为应用程序的属性,读取都是从App.config里获取,设置也可以通过手工修改App.config改变,但是在程序中无法对其进行赋值,只能读取。

    而范围为用户的属性Settings 在第一次运行时会读取App.config里的初始值但是一旦调用Save方法后,Settings用户范围的属性就会保存在系统里面,类似WebForm里的Cookies一样从此以后,读取都会从系统里保存的值里读取,手工修改App.config里的用户范围的属性不会影响到这些属性,但是在调用Reset方法时会重新App.config里获取用户范围的属性写入到系统中。也就是说,settings用户范围的属性总共有3个地方存储。

    1App.config配置文件程序第一次运行,之前程序未调用save(),在系统中找不到就会从这里获取

    2、操作系统settings调用save()保存后。

    3、内存程序启动后,实例化settings对象,该实例在创建的时候从系统(如果系统中没有就如前面提到的从配置文件中获取)读取在内存中。

    另外App.config系统内存这3个位置之间值的关系可以使用以下方法互相影响。

      1.new() 构造函数从系统或配置文件中读取属性值 用户属性先检查系统,如果没有值,再配置文件中读取,应用程序属性都从配置文件读取。

      2.Save():将settings“用户范围的属性写入到系统中,settings实例后,在程序中被赋予新值,如果想保存这些值以便在程序下一次运行时使用,就可以调用Save保存

      例:Properties.Settings.Default.Save();

    3.Reload():从系统或App.config中读取已保存的值刷新当前内存里用户范围的属性。先检查系统,当系统中没有保存时再从App.config中获取

      例:Properties.Settings.Default.Reload();

    4.Reset():清空系统中保存的settings,并且从App.config中刷新内存里用户范围的属性。

      例:Properties.Settings.Default.Reset();

    5.Upgrade():当程序安装多个时,从最新的一个程序所保存在系统的值读取出来并刷新内存里用户范围的属性。

      例:Properties.Settings.Default.Upgrade();

  •  值(Value):配置的数据,根据类型不同值类型也要一致。

1.2使用说明

1、定义:在Settings.settings中直接添加即可。

2、读取配置值

text1.text = Properties.Settings.Default.FieldName;

//FieldName是你定义的字段

3、修改和保存配置

Properties.Settings.Default.FieldName = "server";

Properties.Settings.Default.Save();//使用Save方法保存更改

4、自己创建(未测试)

创建一个配置类FtpSetting。在WinForm应用程序里,一切配置类都得继承自 ApplicationSettingsBase 类。

sealed class FtpSettings : ApplicationSettingsBase

 {

      [UserScopedSetting]

      [DefaultSettingValue("127.0.0.1")]

      public string Server

      {

           get { return (string)this["Server"]; }

           set { this["Server"] = value; }

      }

      [UserScopedSetting]

      [DefaultSettingValue("21")]

      public int Port

      {

          get { return (int)this["Port"]; }

          set { this["Port"] = value; }

      }

}

使用上述配置类,可以用:

private void button2_Click(object sender, EventArgs e)

{

     FtpSettings ftp = new FtpSettings();

     string msg = ftp.Server + ":" + ftp.Port.ToString();

     MessageBox.Show(msg);

}

我们在使用上述FtpSetting 配置时,当然要先进行赋值保存,然后再使用,后面再修改,再保存,再使用。

private void button2_Click(object sender, EventArgs e)

{

     FtpSettings ftp = new FtpSettings();

     ftp.Server = "ftp.test.com";

     ftp.Port = 8021;

     ftp.Save();

     ftp.Reload();

     string msg = ftp.Server + ":" + ftp.Port.ToString();

     MessageBox.Show(msg);

}

Save完成。由于我们是用UserScope(用户范围)的,所以其实该配置信息是保存到了你的Windows的个人文件夹里去了。比如我的就是 C:\Documents and Settings\brooks\Local Settings\Application Data\TestWinForm目录了。

以上内容参考地址:

https://www.cnblogs.com/tianciliangen/p/6016014.html?utm_source=itdadao&utm_medium=referral

https://www.cnblogs.com/ZetaChow/archive/2011/11/03/2234688.html

2.xml配置文件

XML是一种简单的数据存储语言,使用一系列简单的标记描述数据,而这些标记可以用方便的方式建立,虽然XML占用的空间比二进制数据要占用更多的空间,但XML极其简单易于掌握和使用。

在程序中访问进而操作XML文件一般有两种模型,分别是使用DOM(文档对象模型)和流模型,使用DOM的好处在于它允许编辑和更新XML文档,可以随机访问文档中的数据,可以使用XPath查询,但是,DOM的缺点在于它需要一次性的加载整个文档到内存中,对于大型的文档,这会造成资源问题。流模型很好的解决了这个问题,因为它对XML文件的访问采用的是流的概念,也就是说,任何时候在内存中只有当前节点,但它也有它的不足,它是只读的,仅向前的,不能在文档中执行向后导航操作。我们也可以在程序中两者并用

下面我将介绍三种常用的读取XML文件的方法。分别是

   1: 使用 XmlDocument

   2: 使用 XmlTextReader

   3: 使用 Linq to Xml

 

以上内容参考地址:

https://www.cnblogs.com/a1656344531/archive/2012/11/28/2792863.html

3.ini配置文件

C#读写ini文件之前要了解的概念:INI就是扩展名为"INI"的文件,其实他本身是个文本文件,可以用记事本打开,主要存放的是用户所做的选择或系统的各种参数.

C#读写ini文件其实并不是普通的文本文件.它有自己的结构.由若干段落(SECTION)组成,在每个带括号的标题下面,是若干个以单个单词开头的关键字(KEYWORD)和一个等号,等号右边就是关键字的值(VALUE).例如:

 

[Section1]  

    KeyWord1 = Value1  

    KeyWord2 = Value2  

    ...  

[Section2]  

    KeyWord3 = Value3  

    KeyWord4 = Value4

C#读写ini文件最初的想法:C#命名空间中没有直接读写INI的类,当然如果你把INT当成文本文件用System.IO类来读写算我没说.

我现在介绍的是系统处理INI的方法.

虽然C#中没有,但是在"kernel32.dll"这个文件中有Win32API函数--WritePrivateProfileString()GetPrivateProfileString()

C#读写ini文件实现之C#声明INI文件的写操作函数WritePrivateProfileString():

[DllImport( "kernel32" )]  

  private static extern long WritePrivateProfileString (

 string section ,string key , string val   

, string filePath ) ;

参数说明:

sectionINI文件中的段落;

keyINI文件中的关键字;

valINI文件中关键字的数值;

filePathINI文件的完整的路径和名称。

C#读写ini文件实现之C#申明INI文件的读操作函数GetPrivateProfileString():

[DllImport("kernel32")]  

 private static extern int GetPrivateProfileString (

 string section ,  

  string key , string def , StringBuilder retVal ,  

  int size , string filePath ) ;

参数说明:

sectionINI文件中的段落名称;

keyINI文件中的关键字;

def:无法读取时候时候的缺省数值;

retVal:读取数值;

size:数值的大小;

filePathINI文件的完整路径和名称。

以上内容参考地址:

https://blog.csdn.net/shao5155285/article/details/5603070

 

转载于:https://www.cnblogs.com/mmengblog/p/11410891.html

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值