2009-07-23 10 views
8

Ich habe eine Klasse geschrieben, die mich leicht in App-Einstellungen lesen und schreiben Werte erlauben sollte:Wie kann ich die Anwendungseinstellungen (Einstellungen) ändern, während die App geöffnet ist?

public static class SettingsManager 
    { 
     public static string ComplexValidationsString 
     { 
      get { return (string)Properties.Settings.Default["ComplexValidations"]; } 
      set 
      { 
       Properties.Settings.Default["ComplexValidations"] = value; 
       Properties.Settings.Default.Save(); 
      } 
     } 

das Problem ist der Wert nicht wirklich gerettet, ich meine es nicht geändert wird, wenn ich die Ausfahrt Anwendung und führen Sie es erneut aus. Was kann ich tun, um sicherzustellen, dass der gespeicherte Wert zwischen dem Schließen und dem erneuten Öffnen erhalten bleibt?

+1

Das sollte sparen, ich sehe keine Probleme damit in meinen Augen. – ThePower

Antwort

5

sollten Sie

überprüfen
Properties.Settings.Default.Properties["ComplexValidations"].IsReadOnly 

Es ist wohl wahr, das ist, was Roland bedeutet mit "Application Scope". Das Speichern schlägt automatisch fehl. Sehen Sie sich Projekt | Eigenschaften | Einstellungen, 3. Spalte an.

11

Bereichseinstellungen müssen Sie Benutzer nicht Anwendung

+0

was meinst du? – agnieszka

+0

Fügen Sie vor Ihrer Einstellung in Settings.designer.cs [global :: System.Configuration.UserScopedSettingAttribute()] oder ändern Sie einfach den Bereich in settings1.settings – Woland

2

Sind Sie sicher, dass es die Änderungen nicht rettende? Die Datei [ProgramName] .exe.config im Ordner bin wird nicht aktualisiert. Die verwendete Datei wird normalerweise in C:\Documents and Settings\[user]\Local Settings\Application Data\[company name]\[application].exe[hash string]\[version]\user.config eingegeben. Ich weiß, als ich es versuchte, dauerte es eine Weile, bis mir klar wurde, dass das die Datei war, die aktualisiert wurde.

+0

welche Datei es aktualisiert wird, als Ergebnis möchte ich die sehen Der Wert von ComplexValidationsString muss auf den Wert gesetzt werden, der beim letzten Öffnen der App festgelegt wurde. – agnieszka

0

Getestet habe ich nur eine Benutzereinstellung und es wird beibehalten, wenn Sie diese Konsole App zweimal ausführen:

class Program 
{ 
    static void Main(string[] args) 
    { 
     Console.WriteLine(Settings1.Default.Setting); 
     Console.ReadLine(); 
     Settings1.Default.Setting = "A value different from app.config's"; 
     Settings1.Default.Save(); 
    } 
} 

Probieren Sie es einfach aus. Es wird keine Minute dauern.

Verwandte Themen