Lecture des paramètres d'application par défaut en C#

j'ai un certain nombre de paramètres d'application (dans la portée de l'utilisateur) pour mon contrôle de grille personnalisé. La plupart d'entre eux sont des paramètres de couleur. J'ai une forme où l'utilisateur peut personnaliser ces couleurs et je veux ajouter un bouton pour revenir aux paramètres de couleur par défaut. Comment puis-je lire les paramètres par défaut?

par exemple:

  1. j'ai un paramètre utilisateur nommé CellBackgroundColor dans Properties.Settings .
  2. au moment de la conception je fixe la valeur de CellBackgroundColor à Color.White en utilisant L'IDE.
  3. Utilisateur définit CellBackgroundColor à Color.Black dans mon programme.
  4. j'enregistre les paramètres avec Properties.Settings.Default.Save() .
  5. clique sur le bouton Restore Default Colors .

Maintenant, Properties.Settings.Default.CellBackgroundColor renvoie Color.Black . Comment revenir à Color.White ?

26
demandé sur Ozgur Ozcitak 2008-09-08 11:30:47

7 réponses

@ozgur,

Settings.Default.Properties["property"].DefaultValue // initial value from config file

exemple:

string foo = Settings.Default.Foo; // Foo = "Foo" by default
Settings.Default.Foo = "Boo";
Settings.Default.Save();
string modifiedValue = Settings.Default.Foo; // modifiedValue = "Boo"
string originalValue = Settings.Default.Properties["Foo"].DefaultValue as string; // originalValue = "Foo"
35
répondu aku 2008-09-08 07:55:30

Lecture "Windows 2.0 formes programmation", je suis tombé sur ces 2 méthodes utiles qui peuvent être d'une aide dans ce contexte:

ApplicationSettingsBase.Recharger

Applicationsbase.Réinitialiser

de MSDN:

Reload contrastes avec Reset in that l'ancienne charge la dernière série de paramètres de l'application sauvegardés valeurs, alors que ce dernier chargera le les valeurs par défaut.

donc l'usage serait:

Properties.Settings.Default.Reset()
Properties.Settings.Default.Reload()
11
répondu Ohad Schneider 2010-01-23 12:20:32

Je ne suis pas vraiment sûr que ce soit nécessaire, il doit y avoir une voie plus claire, sinon j'espère que quelqu'un trouvera cette utile;

public static class SettingsPropertyCollectionExtensions
{
    public static T GetDefault<T>(this SettingsPropertyCollection me, string property)
    {
        string val_string = (string)Settings.Default.Properties[property].DefaultValue;

        return (T)Convert.ChangeType(val_string, typeof(T));
    }
}
"151920920 utilisation";

var setting = Settings.Default.Properties.GetDefault<double>("MySetting");
4
répondu expelledboy 2011-11-22 17:56:35

Properties.Settings.Default.Reset() va réinitialiser tous les paramètres à leur valeur originale.

2
répondu Domagoj Peharda 2010-01-29 22:05:04

Comment puis-je revenir à la couleur.Blanc?

deux façons de faire:

  • sauvegardez une copie des paramètres avant que l'utilisateur ne les modifie.
  • Cache Les paramètres modifiés par l'utilisateur et sauvegardez-les dans Propriétés.Paramètres avant la fermeture de l'application.
1
répondu jfs 2008-09-08 07:54:24

j'ai contourné ce problème en ayant 2 ensembles de paramètres. J'utilise celui que Visual Studio ajoute par défaut pour les paramètres actuels, i.e. Properties.Settings.Default . Mais j'ajoute aussi un autre fichier de paramètres à mon projet "Project - > Ajouter un nouvel article -> General - > Settings File" et y stocker les valeurs par défaut réelles, i.e. Properties.DefaultSettings.Default .

Je m'assure alors que je n'écris jamais dans les paramètres Properties.DefaultSettings.Default , il suffit de lire à partir de celui-ci. Tout changer aux valeurs par défaut est alors un cas de réglage les valeurs actuelles aux valeurs par défaut.

1
répondu Matt Warren 2008-09-08 08:50:20

j'ai trouvé qu'appeler ApplicationSettingsBase.Reset aurait pour effet de réinitialiser les paramètres à leurs valeurs par défaut, mais aussi de les sauver en même temps.

le comportement que je voulais était de les Réinitialiser aux valeurs par défaut, mais pas pour les sauver (de sorte que si l'utilisateur n'aimait pas les valeurs par défaut, jusqu'à ce qu'elles soient sauvegardées, ils pouvaient les retourner).

j'ai écrit une méthode d'extension qui était appropriée à mes fins:

using System;
using System.Configuration;

namespace YourApplication.Extensions
{
    public static class ExtensionsApplicationSettingsBase
    {
        public static void LoadDefaults(this ApplicationSettingsBase that)
        {
            foreach (SettingsProperty settingsProperty in that.Properties)
            {
                that[settingsProperty.Name] =
                    Convert.ChangeType(settingsProperty.DefaultValue,
                                       settingsProperty.PropertyType);
            }
        }
    }
}
0
répondu ta.speot.is 2013-01-14 02:07:47