2009-05-28 107 views
1

我有一個WinForms應用程序,它使用.NET 2的設置功能,但保存在應用程序中的用戶範圍設置值通常會被設置類中存儲的默認值所取代。很久以前,我在某個地方發現了一些指導,將其歸因於自動遞增構建編號,我懷疑這是真的。但是,所述指導建議使用以下代碼,但不知怎的,我的設置仍然不斷被重置。用戶範圍應用設置始終重置爲默認值

我正在解決太多的其他問題,現在深入探討這個問題,我想我會解決問題,看看有人能幫助我,還有其他所有人都有這個問題。

private void Form1_Load(object sender, EventArgs e) 
    { 
     UpgradeSettings(); 
     GetSettings(); 
    } 

    private void UpgradeSettings() 
    { 
     if (Properties.Settings.Default.CallUpgrade) 
     { 
      Properties.Settings.Default.Upgrade(); 
      Properties.Settings.Default.CallUpgrade = false; 
     } 
    } 
+0

不應該有一個調用Properties.Settings.Default.Save()以及? – 2010-07-01 09:21:20

回答

1

您必須修改UpgradeSettings,如下所示。 CallUpgrade的初始值應該爲true(在用戶設置中)。

private void Form1_Load(object sender, EventArgs e) 
{ 
    UpgradeSettings(); 
    GetSettings(); 
} 

private void UpgradeSettings() 
{ 
    if (Properties.Settings.Default.CallUpgrade) 
    { 
     Properties.Settings.Default.Upgrade(); 
     Properties.Settings.Default.Reload(); // to activate the settings 
     Properties.Settings.Default.CallUpgrade = false; 
     Properties.Settings.Default.Save();// to save the new value of CallUpgrade    
    } 
} 
0

CallUpgrade默認爲true嗎?對Upgrade()的調用應該跨內部版本號遷移設置。

另一種方法是使用固定版本號。您可以根據需要手動修改AssemblyInfo.cs。