文章目錄
- 在設計時更改現有設定的值
- 在應用程式工作階段之間更改設定值
- 在運行時讀取設定
- 在運行時儲存使用者佈建
在 C# 中使用設定發布日期: 2006-10-09 | 更新日期: 2006-10-09
Matt Stoecker
Microsoft Corporation
適用於:
| • |
Microsoft Visual C# 2005 |
| • |
Microsoft .NET Framework 2.0 |
摘要:瞭解如何配合應用程式及使用者佈建使用 Visual C# 2005 中的新功能。
本頁內容
|
簡介 |
|
應用程式及使用者佈建 |
|
在設計時建立新設定 |
|
在運行時使用設定 |
|
交替使用多組設定 |
|
結束語 |
簡介
.NET
Framework 2.0
允許您建立和訪問在各應用程式執行會話之間保持的值。這些值稱為設定。設定可以表示使用者喜好設定,也可表示應用程式需要使用的寶貴資訊。例如,可以建立一系
列設定來儲存應用程式色彩配置的使用者喜好設定。也可以儲存指定應用程式所使用資料庫的連接字串。通過設定不但可以保持對於代碼外部的應用程式至關重要的信
息,而且還可以建立分別儲存各使用者喜好設定的設定檔。
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”
(範圍)屬性需要稍加說明。設定具有兩個可能的範圍:Application 領域和使用者範圍。具有Application 領域的設定表示無論使用者喜好設定為何應用程式都會使用
的設定,而具有使用者範圍的設定對實際應用程式來說通常並不是很重要,它們很可能與喜好設定或其他非關索引值關聯。
Application 領域設定與使用者作
用網域設定之間的重要區別是,使用者範圍設定在運行時為讀/寫,並且可在代碼中對其值變更和儲存。Application 領域設定在運行時為唯讀。雖然可以讀取,但
是不能對其進行寫入。具有Application 領域的設定只能在設計時或通過手動修改設定檔案變更。
返回頁首
在設計時建立新設定
可
以使用設定設計器在設計時建立新的設定。設定設計器採用了大家熟悉的網格式介面,通過它可以建立新設定並指定這些設定的屬性。必須為每個新設定指定
“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>
|
| • |
為設定鍵入新值,然後儲存該檔案。 |
返回頁首
在運行時使用設定
運行時應用程式可以通過代碼使用設定。具有Application 領域的設定值能夠以唯讀方式進行訪問,而使用者範圍設定的值可以進行讀寫。在 C# 中可以通過 Properties 命名空間使用設定。
在運行時讀取設定
可在運行時使用 Properties 命名空間讀取Application 領域及使用者範圍設定。Properties 命名空間通過 Properties.Settings.Default 對象公開了項目的所有預設設定。編寫使用設定的代碼時,所有設定都會出現在 IntelliSense 中並且被強型別化。因此,舉例來說,如果設定的類型為 System.Drawing.Color,則無需先對其進行強制類型轉換即可使用該設定,如下例所示:
this.BackColor = Properties.Settings.Default.myColor;
在運行時儲存使用者佈建
Application 領域設定是唯讀,只能在設計時或通過在應用程式工作階段之間修改
<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 對象訪問此組設定。 |
返回頁首
結束語
在本文中,您已瞭解如何在 C# 應用程式中使用設定來儲存和管理從屬於應用程式和使用者的設定。您還學會了如何在設計時添加設定、如何在運行時讀寫設定,以及如何將多組附加設定合并到應用程式中。