C#中使用設定 Properties.Settings.Default
Visual Basic 2005 使用 My 名稱空間提供了一種顯而易見的設定訪問機制,而在 Visual C# 2005 中沒有類似的名稱空間,因而訪問設定稍微要困難一些。儘管如此,C# 使用者仍可通過訪問 Properties 名稱空間來使用設定。在閱讀本文的過程中,您將會了解應用程式設定與使用者設定之間的差異、如何在設計時建立新的設定、如何在執行時訪問設定,以及如何將多組設定合併到應用程式中。
應用程式及使用者設定
設定具有四個屬性:
• |
Name(名稱):設定的“Name”(名稱)屬性是指用於在執行時訪問設定值的名稱。 |
• |
Type(型別):設定的“Type”(型別)是指設定所表示的 .NET Framework 型別。設定可以是任意型別。例如,存放使用者顏色首選項的設定將會是 System.Color 型別。 |
• |
Scope(作用域):“Scope”(作用域)屬性表示如何在執行時訪問設定。“Scope”(作用域)屬性有兩個可能的值:“Application”(應用程式)和“User”(使用者)。本部分將會對這些值進行更多討論。 |
• |
Value(值):“Value”(值)屬性表示訪問設定時返回的值。該值將為“Type”(型別)屬性所表示的型別。 |
這些屬性中的大多數都相當容易理解。“Name”(名稱)、“Type”(型別)和“Value”(值)的概念均應為大多數程式設計師所熟知。“Scope”(作用域)屬性需要稍加說明。設定具有兩個可能的作用域:應用程式作用域和使用者作用域。具有應用程式作用域的設定表示無論使用者首選項為何應用程式都會使用的設定,而具有使用者作用域的設定對實際應用程式來說通常並不是很重要,它們很可能與首選項或其他非關鍵值關聯。
應用程式作用域設定與使用者作用域設定之間的重要區別是,使用者作用域設定在執行時為讀/寫,並且可在程式碼中對其值進行更改和儲存。應用程式作用域設定在執行時為只讀。雖然可以讀取,但是不能對其進行寫入。具有應用程式作用域的設定只能在設計時或通過手動修改設定檔案進行更改。
在設計時建立新設定
可以使用設定設計器在設計時建立新的設定。設定設計器採用了大家熟悉的網格式介面,通過它可以建立新設定並指定這些設定的屬性。必須為每個新設定指定“Name”(名稱)、“Type”(型別)、“Scope”(作用域)和“Value”(值)。建立了設定後,即可使用本文稍後介紹的機制在程式碼中對其進行評估。
在設計時建立新設定的步驟
• |
在“Solution Explorer”(解決方案資源管理器)中,展開專案的“Properties”(屬性)節點。 |
• |
在“Solution Explorer”(解決方案資源管理器)中,雙擊要在其中新增新設定的 .settings 檔案。此檔案的預設名稱是 Settings.settings。 |
• |
在設定設計器中,為設定設定“Name”(名稱)、“Type”(型別)、“Scope”(作用域)和“Value”(值)。每行代表單個設定。圖 1 給出了一個設定設計器示例。 |
圖 1. Visual Studio 2005 中的設定設計器
在設計時更改現有設定的值
還可以按以下步驟所述,使用設定設計器在設計時更改預先存在設定的值:
在設計時更改現有設定值的步驟
• |
在“Solution Explorer”(解決方案資源管理器)中,展開專案的“Properties”(屬性)節點。 |
• |
在“Solution Explorer”(解決方案資源管理器)中,雙擊要在其中新增新設定的 .settings 檔案。此檔案的預設名稱是 Settings.settings。 |
• |
在設定設計器中,找到要更改的設定,然後在“Value”(值)列中鍵入新值。 |
在應用程式會話之間更改設定值
有時,在編譯和部署了應用程式後,可能需要在應用程式會話之間更改設定值。例如,可能需要更改連線字串,使其指向正確的資料庫位置。由於設計時工具在應用程式編譯和部署後不可用,所以必須手動在檔案中更改設定值。
在應用程式會話間更改設定值的步驟
• |
使用 Microsoft 記事本或其他某種文字或 XML 編輯器,開啟與應用程式關聯的 <AssemblyName>.exe.config 檔案。 |
• |
找到要更改的設定條目。它應看似以下示例: <setting name="Setting" serializeAs="String"> <value>這是設定值</value> </setting> |
• |
為設定鍵入新值,然後儲存該檔案。 |
在執行時使用設定
執行時應用程式可以通過程式碼使用設定。具有應用程式作用域的設定值能夠以只讀方式進行訪問,而使用者作用域設定的值可以進行讀寫。在 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(); |
交替使用多組設定
在某些情況下,可能需要在應用程式中使用多組設定。例如,如果正在開發的應用程式中有某組設定預計會頻繁進行更改,則比較明智的做法是將其全都分成單個檔案,這樣便可成批替換相應檔案,而不會使其他設定受到影響。Visual Studio 2005 允許向專案中新增多組設定。可以通過各自節點中生成的設定物件來訪問各組附加設定。例如,如果向專案中添加了名為 SpecialSettings 的一組設定,則要通過Properties.SpecialSettings 物件來訪問該組設定包含在程式碼中的設定。
新增附加設定組的步驟
• |
從“Project”(專案)選單中選擇“Add New Item”(新增新項)。將會開啟“Add New Item”(新增新項)對話方塊。 |
• |
在“Add New Item”(新增新項)對話方塊中,選擇“Settings File”(設定檔案)。 |
• |
在“Name”(名稱)框中為設定檔案命名,如 SpecialSettings.settings,然後單擊“Add”(新增),將檔案新增到解決方案中。 |
• |
在“Solution Explorer”(解決方案資源管理器)中,將新的設定檔案拖入到 Properties 資料夾中。這樣便可在程式碼中使用新的設定。 |
• |
如在其他任何設定檔案中那樣在此檔案中新增和使用設定。可通過 Properties.SpecialSettings 物件訪問此組設定。 |