C#中使用設置(Settings.settings) Properties.Settings.Default .

在設計時創建新設置的步驟
在“Solution Explorer”(解決方案資源管理器)中,展開項目的“Properties”(屬性)節點。
在“Solution Explorer”(解決方案資源管理器)中,雙擊要在其中添加新設置的 .settings 文件。此文件的默認名稱是 Settings.settings。
| • | 為設置鍵入新值,然后保存該文件。 |
在運行時使用設置
運行時應用程序可以通過代碼使用設置。具有應用程序作用域的設置值能夠以只讀方式進行訪問,而用戶作用域設置的值可以進行讀寫。在 C# 中可以通過 Properties 命名空間使用設置。
在運行時讀取設置
可在運行時使用 Properties 命名空間讀取應用程序作用域及用戶作用域設置。Properties 命名空間通過Properties.Settings.Default 對象公開了項目的所有默認設置。編寫使用設置的代碼時,所有設置都會出現在 IntelliSense 中並且被強類型化。因此,舉例來說,如果設置的類型為 System.Drawing.Color,則無需先對其進行強制類型轉換即可使用該設置,如下例所示:
this.BackColor = Properties.Settings.Default.myColor;
在運行時保存用戶設置
應用程序作用域設置是只讀的,只能在設計時或通過在應用程序會話之間修改 <AssemblyName>.exe.config 文件來進行更改。然而,用戶作用域設置卻可以在運行時進行寫入,就像更改任何屬性值那樣。新值會在應用程序會話持續期間一直保持下去。可以通過調用 Settings.Save 方法來保持在應用程序會話之間對用戶設置所做的更改。這些設置保存在 User.config 文件中。
在運行時寫入和保持用戶設置的步驟
| • | 訪問用戶設置並為其分配新值,如下例所示: Properties.Settings.Default.myColor = Color.AliceBlue;
|
| • | 如果要保持在應用程序會話之間對用戶設置所做的更改,請調用 Save 方法,如以下代碼所示: Properties.Settings.Default.Save(); |
=========================================================================================================================================================================================================================================================================================================================================================================================================
1、定義
在Settings.settings文件中定義配置字段。把作用范圍定義為:User則運行時可更改,Applicatiion則運行時不可更改。可以使用數據網格視圖,很方便;
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目錄了。
=========================================================================================================================================================================================================================================================================================================================================================================================================
例:
using System;
using System.Collections.Generic;using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Configuration;
namespace 設置文件讀寫測試
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Properties.Settings.Default.name = this.textBox1.Text;
Properties.Settings.Default.Save();
this.label1.Text = Properties.Settings.Default.name;
}
private void button2_Click(object sender, EventArgs e)
{
this.label1.Text = Properties.Settings.Default.name;
}
private void button3_Click(object sender, EventArgs e)
{
FtpSettings ftp = new FtpSettings();
string msg = ftp.Server + ":" + ftp.Port.ToString();
this.label2.Text = msg;
}
private void button4_Click(object sender, EventArgs e)
{
FtpSettings ftp = new FtpSettings();
ftp.Server = this.textBox2.Text ;
ftp.Port = Convert.ToInt32(this.textBox3.Text);
ftp.Save();
//ftp.Reload();
string msg = ftp.Server + ":" + ftp.Port.ToString();
this.label2.Text = msg;
}
}
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; }
}
}
}
