Posted on 2011-01-05 16:13
Hero 閱讀(9847)
評論(0) 編輯 收藏 引用 所屬分類:
C#積累
簡介
.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”(作用域)屬性需要稍加說明。設置具有兩個可能的作用域:應用程序作用域和用戶作用域。具有應用程序作用域的設置表示無論用戶首選項為何應用程序都會使用的設置,而具有用戶作用域的設置對實際應用程序來說通常并不是很重要,它們很可能與首選項或其他非關鍵值關聯。
應用程序作用域設置與用戶作用域設置之間的重要區別是,用戶作用域設置在運行時為讀/寫,并且可在代碼中對其值進行更改和保存。應用程序作用域設置在運行時為只讀。雖然可以讀取,但是不能對其進行寫入。具有應用程序作用域的設置只能在設計時或通過手動修改設置文件進行更改。
在設計時創建新設置
可以使用設置設計器在設計時創建新的設置。設置設計器采用了大家熟悉的網格式界面,通過它可以創建新設置并指定這些設置的屬性。必須為每個新設置指定“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 對象訪問此組設置。
|
結束語
在本文中,您已了解如何在 C# 應用程序中使用設置來存儲和管理從屬于應用程序和用戶的設置。您還學會了如何在設計時添加設置、如何在運行時讀寫設置,以及如何將多組附加設置合并到應用程序中。