1. 程式人生 > >C#中使用設定(Settings.settings) Properties.Settings.Default .

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; }
        }
    }
}