C# winform Settings 工作原理和方法說明

Settings裏的屬性根據範圍分爲兩種 “用戶”和“應用程序”

範圍爲“應用程序”的屬性,讀取都是從APP.CONFIG裏獲取,設置也可以通過手工修改App.config改變,但是在程序中無法對其進行賦值,只能讀取。

而範圍爲“用戶”的屬性 Settings 在第一次運行時會讀取App.config裏的初始值

但是一旦調用Save方法後,Settings裏“用戶”範圍的屬性就會保存在系統裏面,類似WebForm裏的Cookies一樣

從此以後,讀取都會從系統裏保存的值裏讀取,手工修改App.config裏的“用戶”範圍的屬性不會影響到這些屬性,但是在調用Reset方法時會從新從App.config裏獲取“用戶”範圍的屬性寫入到系統中。

            也就是說,settings裏“用戶”範圍的屬性總共有3個地方存儲。

1、app.config配置文件-----程序第一次運行,之前程序未調用save(),在系統中找不到就會從這裏獲取

2、操作系統--------當settings調用save()保存後。

3、內存----程序啓動後,實例化settings對象,該實例在創建的時候從系統(如果系統中沒有就如前面提到的從配置文件中獲取)讀取在內存中。

 

另外app.config,系統,內存這3個位置之間值的關係可以使用以下方法互相影響。

new() 構造函數,從系統或配置文件中讀取屬性值 ,“用戶”屬性先檢查系統,如果沒有值,再衝配置文件中讀取,“應用程序”屬性都從配置文件讀取。

Save:將settings“用戶”範圍的屬性寫入到系統中, settings實例後,在程序中被賦予新值,如果想保存這些值以便在程序下一次運行時使用,就可以調用Save保存

例:Properties.Settings.Default.Save();         

Reload:從系統或App.config中讀取已保存的值刷新當前內存裏“用戶”範圍的屬性。先檢查系統,當系統中沒有保存時再從app.config中獲取

例:Properties.Settings.Default.Reload();

Reset:清空系統中保存的settings,並且從app.config中刷新內存裏“用戶”範圍的屬性。
例:Properties.Settings.Default.Reset();

Upgrade:當程序安裝多個時,從最新的一個程序所保存在系統的值讀取出來並刷新內存裏“用戶”範圍的屬性。
例:Properties.Settings.Default.Upgrade();


發佈了63 篇原創文章 · 獲贊 21 · 訪問量 18萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章