一、什么是.settings文件
.settings文件是专用于保存程序设置文件。当应用程序启动时,从.settings文件中读入程序设置;退出时,将程序的某些设置保存到.settings文件中,下次启动是可以再次从文件读取这些设置。
二、实例
1. 新建项目
启动VS2012,新建一个“Windows 窗体应用程序”,项目名称“WindowsFormsApplication1”
2. 为项目添加一个“设置文件”
解决方案管理中,在项目“WindowsFormsApplication1”上点鼠标右键-->添加-->新建项
在“常规”类别中,选择“设置文件”,文件名称为:WinApp.settings。点“添加”,如下图
在项目会添加两个新的文件app.config和WinApp.settings,如下图所示。
3. 编辑WinApp.settings
4. 在程序中使用WinApp.settings
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 窗口的标题
this.Text = WinApp.Default.appTilte;
// 窗口位置
this.Left = WinApp.Default.x;
this.Top = WinApp.Default.y;
// 窗口尺寸
this.Width = WinApp.Default.width;
this.Height = WinApp.Default.height;
// 起始位置设置为手动
this.StartPosition = FormStartPosition.Manual;
}
/// <summary>
/// 窗口关闭前,保存窗口位置和尺寸
/// </summary>
/// <param name="e"></param>
protected override void OnFormClosed(FormClosedEventArgs e)
{
base.OnFormClosed(e);
// 保存窗口位置
WinApp.Default.x = this.Left;
WinApp.Default.y = this.Top;
// 保存窗口尺寸
WinApp.Default.width = this.Width;
WinApp.Default.height = this.Height;
// 保存
WinApp.Default.Save();
}
}
}
5. 运行程序,在桌面上移动窗口并改变窗口的大小,然后退出。再次运行程序,窗口会显示在上次退出时的位置,并且大小与上次退出时一样。
三、结论
1. 在项目中添加 .settings文件后,设计器自动添加存取这个文件的便利类。在上面的例子中,这个类名称为 “WinApp”(在文件WinApp.Designer.cs中)
2. 如下图所示的设置文件保存位置。注意:不同Windows用户或者同一个用户以不同身份(以管理员身份或普通用户身份)运行上面的程序后,将会生成不同版本的文件。
如下图所示,同一个用户ROCK分别以“普通用户”和“管理员用户”运行上面程序后,系统自动保存了两个版本的设置文件。
3. 在app.config中保存着WinApp.settings的“默认值” —— 以app.config文件中<userSettings>……</userSettings>的值用作为第一次生成.settings文件的值。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WindowsFormsApplication1.WinApp" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
</sectionGroup>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WindowsFormsApplication1.WinApp" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<userSettings>
<WindowsFormsApplication1.WinApp>
<setting name="x" serializeAs="String">
<value>0</value>
</setting>
<setting name="y" serializeAs="String">
<value>0</value>
</setting>
<setting name="width" serializeAs="String">
<value>400</value>
</setting>
<setting name="height" serializeAs="String">
<value>240</value>
</setting>
</WindowsFormsApplication1.WinApp>
</userSettings>
<applicationSettings>
<WindowsFormsApplication1.WinApp>
<setting name="appTilte" serializeAs="String">
<value>设置文件测试程序</value>
</setting>
</WindowsFormsApplication1.WinApp>
</applicationSettings>
</configuration>
4. 需要频繁保存程序设置时,使用.settings文件来动态保存程序设置更方便,而且,由于配置文件保存位置的特殊行,写入时不会遇到权限问题。