read obtener leer configuracion conexion cadena archivo application app c# .net winforms application-settings

obtener - Leer la configuración de la aplicación predeterminada en C#



properties.settings c# (7)

¿Cómo vuelvo a Color.White?

Dos formas que puedes hacer:

  • Guarde una copia de la configuración antes de que el usuario la cambie.
  • Guarde en caché la configuración modificada por el usuario y guárdela en Propiedades. Configuración antes de que se cierre la aplicación.

Tengo una serie de configuraciones de aplicaciones (en el alcance del usuario) para mi control de cuadrícula personalizado. La mayoría de ellos son configuraciones de color. Tengo un formulario donde el usuario puede personalizar estos colores y quiero agregar un botón para volver a la configuración de color predeterminada. ¿Cómo puedo leer la configuración predeterminada?

Por ejemplo:

  1. Tengo una configuración de usuario llamada CellBackgroundColor en Properties.Settings .
  2. En el momento del diseño, establecí el valor de CellBackgroundColor en Color.White usando el IDE.
  3. El usuario establece CellBackgroundColor en Color.Black en mi programa.
  4. Guardo la configuración con Properties.Settings.Default.Save() .
  5. El usuario hace clic en el botón Restore Default Colors .

Ahora, Properties.Settings.Default.CellBackgroundColor devuelve Color.Black . ¿Cómo vuelvo a Color.White ?


@ozgur,

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

Ejemplo:

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"


Al leer "Programación de formularios de Windows 2.0", me encontré con estos 2 métodos útiles que pueden ser útiles en este contexto:

ApplicationSettingsBase.Reload

ApplicationSettingsBase.Reset

Desde MSDN:

Volver a cargar los contrastes con Restablecer en que el primero cargará el último conjunto de valores guardados de la configuración de la aplicación, mientras que el último cargará los valores predeterminados guardados.

Entonces el uso sería:

Properties.Settings.Default.Reset() Properties.Settings.Default.Reload()


Descubrí que llamar a ApplicationSettingsBase.Reset tendría el efecto de restablecer la configuración a sus valores predeterminados, pero también guardarlos al mismo tiempo.

El comportamiento que quería era restablecerlos a los valores predeterminados pero no guardarlos (de modo que si al usuario no le gustaban los valores predeterminados, hasta que se guardaran, podría revertirlos).

Escribí un método de extensión que era adecuado para mis propósitos:

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


He solucionado este problema teniendo 2 conjuntos de configuraciones. Utilizo el que Visual Studio agrega de forma predeterminada para la configuración actual, es decir, Properties.Settings.Default . Pero también agrego otro archivo de configuración a mi proyecto "Proyecto -> Añadir nuevo elemento -> General -> Archivo de configuración" y almaceno los valores predeterminados reales allí, es decir, Properties.DefaultSettings.Default .

Luego me aseguro de no escribir nunca en la configuración Properties.DefaultSettings.Default , solo lea de ella. Cambiar todo a los valores predeterminados es simplemente el caso de volver a establecer los valores actuales en los valores predeterminados.


No estoy realmente seguro de que esto sea necesario, debe haber una manera más ordenada; de lo contrario, espero que alguien lo encuentre útil;

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

uso;

var setting = Settings.Default.Properties.GetDefault<double>("MySetting");


Properties.Settings.Default.Reset() restablecerá todas las configuraciones a su valor original.