2009-07-23 15 views
8

Pisałem klasę który umożliwi mi łatwo odczytywać i zapisywać wartości w ustawieniach aplikacji:Jak zmienić ustawienia aplikacji (Ustawienia), gdy aplikacja jest otwarta?

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(); 
      } 
     } 

problemem jest wartość nie jest naprawdę uratował, to znaczy, że nie zmienia się, kiedy wyjść z aplikację i uruchom ją ponownie. Co mogę zrobić, aby zachować zapisaną wartość między ponownym otwarciem a zamknięciem? Zakres

+1

To powinno ocalić, nie widzę żadnych problemów z tym w moich oczach. – ThePower

Odpowiedz

5

Należy sprawdzić

Properties.Settings.Default.Properties["ComplexValidations"].IsReadOnly 

Prawdopodobnie jest to prawdą, to co oznacza Roland z "Zakres Application". Zapisz nie powiedzie się po cichu. Spójrz na Project | Properties | Settings, 3rd column.

11

ustawienia muszą być nie użytkownika aplikacji

+0

co masz na myśli? – agnieszka

+0

Dodaj przed ustawieniem w Settings.designer.cs [global :: System.Configuration.UserScopedSettingAttribute()] lub po prostu zmień zakres w settings1.settings – Woland

2

Czy jesteś pewien, że to nie jest zapisywania zmian? Plik [ProgramName] .exe.config w folderze bin nie zostanie zaktualizowany. Plik Acutal jest zwykle umieszczany w C:\Documents and Settings\[user]\Local Settings\Application Data\[company name]\[application].exe[hash string]\[version]\user.config. Wiem, kiedy próbowałem tego rodzaju rzeczy zajęło mi trochę czasu, aby zrozumieć, że to plik, który był aktualizowany.

+0

niezależnie od aktualizowanego pliku, w wyniku czego chciałbym zobaczyć wartość ComplexValidationsString, aby ustawić wartość ustawioną w poprzednim czasie, gdy aplikacja została otwarta. – agnieszka

0

właśnie testowane ustawień użytkownika i to jest zachowywane, jeśli uruchomić tę aplikację konsoli dwukrotnie:

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(); 
    } 
} 

Wystarczy go wypróbować. To nie potrwa ani minuty.

Powiązane problemy