2012-12-06 39 views
2

我正在使用Properties.Settings類來保存應用程序設置。我想知道,一旦我在客戶端系統中部署,是否將在應用程序重新啓動和系統重新啓動時保存設置。在C#中使用設置類

考慮場景:

一旦部署應用程序,用戶將通過UI保存手機號碼作爲

電話:1XXXX - 45678

現在,我想儲存的電話號碼作爲

Properties.Settings.Default.ClientPhone = this.PhoneText.Text; 
Properties.Settings.Default.Save(); 

我的理解是,電話號碼將保存在app.restarts的應用程序中並重新啓動?

+6

如何試用? – ulrichb

+0

您是否嘗試過使用此功能,然後在重新啓動應用程序後檢查值? [閱讀](http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx) – V4Vendetta

+0

不錯,我仍在開發。我必須決定是採取這種方法還是使用其他技術可能將其保存在配置文件中 – Kiran

回答

3

這是關於應用程序和用戶設置的不同。應用程序設置是隻讀的。用戶設置永久存儲在每個用戶的基礎上。 您的代碼正是如何更改和保存用戶設置

請注意:因爲他們被稱爲「用戶設置」,它們將被分別存儲在機器上的每個用戶!您不能使用默認的.NET設置機制創建對所有用戶都相同的可更改設置。

不要重新發明輪子!使用.NET設置機制 - 你在你的例子中是正確的:-)

+0

另請參閱Matthew Watson的回答,它向您展示如何在部署新版本後升級設置。 –

2

這將工作正常,但有一點要記住的是,如果你安裝一個新版本的程序,它會「丟失「舊設置(因爲這些設置是特定於您程序的特定版本的)。 (通過「版本」我的意思是AssemblyVersion)

幸運的是,您可以通過在Main()的開始處或附近調用以下函數來處理此問題。爲此,您需要添加一個名爲NeedSettingsUpgrade的新布爾值設置屬性,並將其默認爲「true」:

/// <summary>Upgrades the application settings, if required.</summary> 

private static void upgradeProgramSettingsIfNecessary() 
{               
    // Application settings are stored in a subfolder named after the full #.#.#.# version 
    // number of the program. This means that when a new version of the program is installed, 
    // the old settings will not be available. 
    // 
    // Fortunately, there's a method called Upgrade() that you can call to upgrade the settings 
    // from the old to the new folder. 
    // 
    // We control when to do this by having a boolean setting called 'NeedSettingsUpgrade' which 
    // is defaulted to true. Therefore, the first time a new version of this program is run, it 
    // will have its default value of true. 
    // 
    // This will cause the code below to call "Upgrade()" which copies the old settings to the new. 
    // It then sets "NeedSettingsUpgrade" to false so the upgrade won't be done the next time. 

    if (Settings.Default.NeedSettingsUpgrade) 
    { 
     Settings.Default.Upgrade(); 
     Settings.Default.NeedSettingsUpgrade = false; 
    } 
} 
+0

將'NeedSettingsUpgrade'設置爲'false'後,您還需要保存設置:) –

+0

是的,但最好等到更改其他設置爲止。通常我會在程序結束時調用.Save(),如果它正常關閉。有些人喜歡在任何設置更改後調用.Save() - YMMV! :) –