2009-05-28 6 views
1

Ich habe eine WinForms-Anwendung, die die Funktion Settings von .NET 2 verwendet, aber die in der Anwendung gespeicherten Werte für Benutzerbereichseinstellungen werden häufig durch die in der Klasse Settings gespeicherten Standardwerte ersetzt. Vor langer Zeit habe ich irgendwo eine Anleitung gefunden, die dies auf eine automatisch inkrementierende Build-Nummer zurückführt, und ich vermute, dass das wahr ist. Diese Anleitung schlug jedoch den folgenden Code vor, aber irgendwie werden meine Einstellungen immer noch zurückgesetzt.Benutzerbereich App Einstellungen immer auf Standardwerte zurückgesetzt

Ich löse zu viele andere Probleme im Moment, um tiefer in diese Sache einzutauchen, aber ich dachte, ich würde die Frage durchgehen und sehen, ob mir jemand helfen kann und alle anderen mit diesem Problem.

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

Sollte es auch keinen Aufruf von Properties.Settings.Default.Save() geben? –

Antwort

1

Sie müssen UpgradeSettings wie folgt ändern. Der Anfangswert von CallUpgrade sollte wahr sein (in den Benutzereinstellungen).

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

Ist CallUpgrade standardmäßig auf "True" eingestellt? Der Aufruf von Upgrade() sollte Einstellungen über Buildnummern migrieren.

Ein anderer Ansatz besteht darin, feste Build-Nummern zu verwenden. Sie können Ihre AssemblyInfo.cs nach Bedarf manuell ändern.

Verwandte Themen