應用程式設定概觀
這個主題將討論如何為應用程式和使用者建立及儲存設定資料。
Windows Form 的應用程式設定功能讓您可以輕易地在用戶端電腦上建立、儲存和維護自訂應用程式和使用者喜好設定。 利用 Windows Form 應用程式設定,您不但可以儲存應用程式資料 (例如資料庫連接字串),而且還可以儲存使用者相關資料 (例如使用者應用程式喜好設定)。 您可以利用 Visual Studio 或自訂 Managed 程式碼來建立新設定、從磁碟讀取設定、將設定寫入磁碟、將設定繫結至表單上的屬性以及在載入和儲存前驗證設定資料。
應用程式設定可以讓開發人員使用極少的自訂程式碼在應用程式中儲存狀態,它是用來取代舊版 .NET Framework 中的動態屬性。 應用程式設定改進了許多動態屬性的內容,這些動態屬性都是唯讀的、為晚期繫結而且需要更多的自訂程式設計。 .NET Framework 2.0 版中仍保留動態屬性類別,但它們只是包裝應用程式設定類別的簡單 Shell 類別。
什麼是應用程式設定?
Windows Form 應用程式會經常要求執行應用程式時所需的重要資料,但是您又不想直接將這些資料包含在應用程式的程式碼中。 如果應用程式是使用 Web 服務或資料庫伺服器,那麼您可能會想要將該資訊儲存在個別檔案中,如此一來不需重新編譯即可變更此資訊。 同樣地,應用程式可能需要儲存與目前使用者相關的資料。 例如,大部分應用程式都具有用來自訂應用程式外觀和行為的使用者喜好設定。
應用程式設定提供了簡易方法來儲存用戶端電腦上應用程式範圍和使用者範圍的設定,同時滿足這兩項需求。 Visual Studio 或程式碼編輯器可藉由定義某一特定屬性的名稱、資料型別和範圍 (應用程式或使用者),來定義其設定。 您甚至可以將相關設定置於具名群組內,以期更便於使用並增進可讀性。 一旦定義完畢後,便會在記憶體中保存這些設定並在執行階段自動讀取。 可外掛式的架構使永續性機制能夠變更,但其預設為使用本機檔案系統。
應用程式設定的運作方式是根據此設定屬於應用程式範圍或使用者範圍,將資料以 XML 格式保存於不同的組態檔 (.config)。 在大部分情況下應用程式範圍的設定是唯讀的,這是因為它們只是程式資訊通常不需覆寫。 相反地,使用者範圍的設定則是能夠在執行階段中安全地進行讀寫,即使您的應用程式是以部分信任方式執行。 如需部分信任的詳細資訊,請參閱 Windows Form 中的安全性概觀。
設定是以 XML 片段儲存於組態檔中。 應用程式範圍的設定是以 <application.Settings> 項目表示,通常會置於 app.exe.config 中,其中的 app 就是主執行檔的名稱。 使用者範圍的設定是以 <userSettings> 項目表示,並會置於 user.config 中,其中的 user 就是目前正在執行應用程式之人員的使用者名稱。 您必須與應用程式一起部署 app.exe.config 檔案,設定架構將會視需要在應用程式第一次儲存該使用者的設定時,建立 user.config 檔案。 您也可以定義 app.exe.config 內的 <userSettings> 區塊,以提供使用者範圍設定的預設值。
自訂控制項也可以藉由實作提供 SaveSettings 方法的 IPersistComponentSettings 介面來儲存它們各自的設定。 Windows Form ToolStrip 控制項實作此介面即可在兩個應用程式工作階段之間儲存工具列和工具列項目的位置。 如需自訂控制項和應用程式設定的詳細資訊,請參閱自訂控制項的應用程式設定。
應用程式設定的限制
您不能在裝載 .NET Framework 的 Unmanaged 應用程式中使用應用程式設定。 在某些環境中,設定將無法正常運作,例如 Visual Studio 增益集 (Add-In)、C++ for Microsoft Office、裝載於 Internet Explorer 中的控制項,或是 Microsoft Outlook 增益集和專案。
您目前無法繫結至 Windows Form 中的一些屬性。 最顯著的範例是 ClientSize 屬性。因為繫結至這個屬性便會在執行階段造成無法預期的行為。 您通常都能以程式設計的方式儲存和載入這些設定,以便解決這些問題。
應用程式設定並沒有自動加密資訊的內建機能。 您永遠都不應該用純文字來儲存資料庫密碼一類的安全性相關資訊。 如果想要儲存這類敏感資訊,身為應用程式開發人員的您,必須負責確保這類資訊的安全。 如果想要儲存連接字串 (Connection String),我們建議您使用 Windows 整合式安全性存取,而不要將密碼以寫入程式碼的方式加入 URL 中。 如需詳細資訊,請參閱程式碼存取安全性和 ADO.NET。
應用程式設定入門
如果您是使用 Visual Studio,則可在 Windows Form 設計工具內使用 [屬性] 視窗中的 [(ApplicationSettings)] 屬性來定義設定。 當您以這個方式來定義設定時,Visual Studio 會自動建立自訂 Managed 包裝函式類別 (Wrapper Class),此類別會將每個設定與某一類別屬性產生關聯。 Visual Studio 也負責將設定繫結至表單上的屬性或控制項,如此一來控制項設定便會在每次顯示表單時還原、在每次關閉表單時自動儲存。 如需詳細資訊,請參閱 HOW TO:使用設計工具建立應用程式設定。
如果想要更進一步控制您的設定,您可以定義自己的自訂應用程式設定包裝函式類別。 其做法為從 ApplicationSettingsBase 衍生一個類別,然後加入對應到每個設定的屬性 (Property),並且將特殊屬性 (Attribute) 套用至這些屬性 (Property)。 如需建立包裝函式類別的詳細資訊,請參閱應用程式設定架構。
您也可以使用 Binding 類別將設定以程式設計方式繫結至表單和控制項上的屬性。 如需建立包裝函式類別的詳細資訊,請參閱 HOW TO:使用設計工具建立應用程式設定。