2009-07-23 3 views
8

J'ai écrit une classe qui devrait me permettre de lire facilement et écrire des valeurs dans les paramètres d'application:Comment changer les paramètres de l'application (Paramètres) lorsque l'application est ouverte?

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

le problème est la valeur est pas vraiment sauvé, je veux dire qu'il ne change pas quand je quitte la application et exécutez-le à nouveau. Que puis-je faire pour m'assurer que la valeur sauvegardée persiste entre la fermeture et l'ouverture à nouveau?

+1

Cela devrait sauver, je ne vois aucun problème à mes yeux. – ThePower

Répondre

5

Vous devriez vérifier

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

Il est probablement vrai, voici ce qui signifie Roland avec "Champ d'application". Enregistrer échouera silencieusement. Jetez un oeil à Projet | Propriétés | Paramètres, 3ème colonne.

11

paramètres doit être portée utilisateur ne demande

+0

que voulez-vous dire? – agnieszka

+0

Ajouter avant votre paramètre dans Settings.designer.cs [global :: System.Configuration.UserScopedSettingAttribute()] ou simplement changer l'étendue dans settings1.settings – Woland

2

Êtes-vous sûr que ce n'est pas enregistrer les modifications? Le fichier [NomProgramme] .exe.config dans le dossier bin ne sera pas mis à jour. Le fichier acutal utilisé est généralement mis en C:\Documents and Settings\[user]\Local Settings\Application Data\[company name]\[application].exe[hash string]\[version]\user.config. Je sais que lorsque j'ai essayé ce genre de chose, il m'a fallu du temps pour réaliser que c'était le fichier qui était mis à jour.

+0

quel fichier il met à jour, par conséquent je voudrais voir le La valeur de ComplexValidationsString doit être définie sur la valeur définie lors de l'ouverture précédente de l'application. – agnieszka

0

Je viens de tester un paramètre utilisateur et il est persista si vous exécutez cette application console deux fois:

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

juste essayer. Cela ne prendra pas une minute.

Questions connexes