2009-07-23 28 views
8

He escrito una clase que debería permitir a mí para leer y escribir valores de configuración de la aplicación fácilmente:¿Cómo cambiar la configuración de la aplicación (Configuración) mientras la aplicación está abierta?

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

el problema es el valor no se salvó realmente, quiero decir que no se cambia cuando salgo de la aplicación y ejecutarlo de nuevo. ¿Qué puedo hacer para garantizar que el valor guardado persista entre el cierre y la apertura nuevamente?

+1

Eso debería estar guardando, no veo ningún problema con eso en mis ojos. – ThePower

Respuesta

5

Usted debe verificar

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

Probablemente es cierto, esto es lo que significa Roland con "Ámbito de aplicación". Guardar fallará en silencio. Eche un vistazo a Proyecto | Propiedades | Configuraciones, 3ra columna.

11

ajustes alcance no debe ser usuario de la aplicación

+0

¿qué quieres decir? – agnieszka

+0

Agregue antes de su configuración en Settings.designer.cs [global :: System.Configuration.UserScopedSettingAttribute()] o simplemente cambie el alcance en settings1.settings – Woland

2

¿Estás seguro de que no guardar los cambios? El archivo [ProgramName] .exe.config en la carpeta bin no se actualizará. El archivo acutal utilizado generalmente se coloca en C:\Documents and Settings\[user]\Local Settings\Application Data\[company name]\[application].exe[hash string]\[version]\user.config. Sé que cuando probé este tipo de cosas, me tomó un tiempo darme cuenta de que este era el archivo que se actualizaba.

+0

cualquiera que sea el archivo que esté actualizando, como resultado, me gustaría ver el valor de ComplexValidationsString para establecerse en el valor establecido en la vez anterior a la apertura de la aplicación. – agnieszka

0

Acabo de probar un ajuste de usuario y se conserva si se ejecuta esta aplicación de consola en dos ocasiones:

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

Sólo probarlo. No tomará un minuto.

Cuestiones relacionadas