2009-07-23 17 views
8

Ho scritto una classe che dovrebbe permettere a me di leggere e scrivere i valori nelle impostazioni app facilmente:Come modificare le impostazioni dell'applicazione (Impostazioni) mentre l'app è aperta?

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

il problema è il valore non è realmente salvato, voglio dire che non è cambiato quando esco la applicazione ed eseguirlo di nuovo. Cosa posso fare per garantire che il valore salvato permanga tra la chiusura e l'apertura di nuovo?

+1

Questo dovrebbe essere il risparmio, non vedo alcun problema con esso nei miei occhi. – ThePower

risposta

5

Si dovrebbe verificare

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

Probabilmente è vero, questo è ciò che significa Roland con "Ambito di applicazione". Salva fallirà silenziosamente. Dai un'occhiata a Progetto | Proprietà | Impostazioni, 3a colonna.

11

impostazioni estensione dovrà essere utente non applicazione

+0

cosa intendi? – agnieszka

+0

Aggiungi prima le tue impostazioni in Settings.designer.cs [global :: System.Configuration.UserScopedSettingAttribute()] o cambia semplicemente l'ambito in settings1.settings – Woland

2

Sei sicuro che non è salvare le modifiche? Il file [ProgramName] .exe.config nella cartella bin non verrà aggiornato. Il file acutale utilizzato viene solitamente inserito in C:\Documents and Settings\[user]\Local Settings\Application Data\[company name]\[application].exe[hash string]\[version]\user.config. So che quando ho provato questo genere di cose mi ci è voluto un po 'per capire che questo era il file che si stava aggiornando.

+0

a prescindere dal file che sta aggiornando, di conseguenza mi piacerebbe vedere il valore di ComplexValidationsString da impostare sul valore impostato nel momento in cui l'app è stata aperta. – agnieszka

0

Ho appena testato un'impostazione utente e viene mantenuto se si esegue questa applicazione Console due volte:

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

Basta provare. Non ci vorrà un minuto.

Problemi correlati