C# 如何使用配置文件保存应用程序里的配置数据

转载连接:http://www.cnblogs.com/SkyD/archive/2009/09/14/1566048.html




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.= numericUpDown1.Value;

    MyApp.Default.= textBox1.Text;

    MyApp.Default.= 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无法实现对一些复杂类型及自定义类型的支持,但是在多数情况下,用它来存储程序配置已是绰绰有余了,在够用的前提下,不要重复造轮子啦。


  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一个使用C#窗体应用程序编写的简单游戏,它包含多个页面: 1. 创建一个新的 Windows 窗体应用程序目。 2. 在 Visual Studio 中打开 MainForm.cs 文件,并将其重命名为 GameForm.cs。 3. 在 GameForm.cs 中添加一个 TabControl 控件,将其 Dock 属性设置为 Fill。 4. 在 TabControl 中添加两个选卡,分别命名为 "Game" 和 "Settings"。 5. 在 "Game" 选卡中添加一个 PictureBox 控件,并将其 Dock 属性设置为 Fill。 6. 在 "Settings" 选卡中添加一些控件,例如 CheckBox、RadioButton、ComboBox 等,用于设置游戏参数。 7. 在 GameForm.cs 中添加一个名为 StartGame 的方法,用于启动游戏。 8. 在 StartGame 方法中,使用 Graphics 类绘制游戏界面,并添加游戏逻辑。 9. 在 GameForm.cs 中添加一个名为 SaveSettings 的方法,用于保存游戏设置。 10. 在 SaveSettings 方法中,将游戏设置保存配置文件中。 11. 在 GameForm.cs 中添加一个名为 LoadSettings 的方法,用于加载游戏设置。 12. 在 LoadSettings 方法中,从配置文件中加载游戏设置,并更新控件的值。 13. 在 GameForm.cs 中添加一个名为 GameForm_Load 的方法,用于在窗体加载时初始化游戏设置。 14. 在 GameForm_Load 方法中,调用 LoadSettings 方法,加载游戏设置。 15. 在 GameForm.cs 中添加一个名为 GameForm_FormClosing 的方法,用于在窗体关闭时保存游戏设置。 16. 在 GameForm_FormClosing 方法中,调用 SaveSettings 方法,保存游戏设置。 17. 在 Main 方法中,创建一个新的 GameForm 对象,并将其作为主窗体运行。 这样,就可以创建一个带有多个页面的游戏窗体应用程序。您可以在 "Game" 选卡中添加游戏界面和逻辑,而在 "Settings" 选卡中添加游戏设置。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值