Hola amigos, en esta ocasión veremos como leer y escribir el archivo de configuración de una aplicación WindowsForms con C#.
Para hacer mas sencillo el trabajo, todo se los pondré en una clase:
public class AppSettings
{
public AppSettings() {
}
private void InitializeComponent() {
}
/// <summary>
/// Establecer valor
/// </summary>
/// <param name="seccion">Sección</param>
/// <param name="clave">Clave</param>
/// <param name="valor">Valor a establecer</param>
public static void SetValue(string seccion, string clave, string valor)
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None ) ;
//Borramos la configuración actual
config.AppSettings.Settings.Remove(seccion + "." + clave ) ;
config.Save(ConfigurationSaveMode.Modified ) ;
//Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings" ) ;
//Grabamos la configuración nueva
config.AppSettings.Settings.Add(seccion + "." + clave, valor ) ;
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified ) ;
//Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings" ) ;
}
/// <summary>
/// Obtener valor
/// </summary>
/// <param name="seccion">Sección</param>
/// <param name="clave">Clave</param>
/// <param name="predeterminado">Valor predeterminado (en caso de no encontrarse)</param>
/// <returns>Valor encontrado</returns>
public static string GetValue(string seccion, string clave, string predeterminado)
{
string _return = "";
try{
_return=ConfigurationManager.AppSettings[seccion + "." + clave];
if(_return=="" ){
_return = predeterminado;
}
return(_return ) ;
}
catch{
return(predeterminado ) ;
}
}
/// <summary>
/// Obtener valor
/// </summary>
/// <param name="seccion">Sección</param>
/// <param name="clave">Clave</param>
/// <returns>Valor encontrado</returns>
public static string GetValue(string seccion, string clave)
{
string _return = "";
try
{
_return = ConfigurationManager.AppSettings[seccion + "." + clave];
if (_return == "" )
{
_return = "";
}
return (_return ) ;
}
catch
{
return ("" ) ;
}
}
}
Explicación:
Tenemos dos procesos, uno para leer (GetValue) y otro para escribir(SetValue).
Para leer no hay complejidad, solamente utilizamos la instrucción "ConfigurationManager.AppSettings" que es la encagada de traernos un valor del archivo de configuración.
En el caso de escribir, si es un poco complejo ya que batallé mucho para "actualizar" el dato que se iba a grabar; lo solucioné borrandolo y escribiendolo de nuevo "config.AppSettings.Settings.Remove".
En si lo que hago es utilizar las clases ya proporcionadas por el .NetFramework dandole una lógica de lectura/escritura segun el caso.
Bueno, esto es todo, visiten mi blog:
Si desean que les haga un sistema/aplicación/programa:
Para hacer mas sencillo el trabajo, todo se los pondré en una clase:
public class AppSettings
{
public AppSettings() {
}
private void InitializeComponent() {
}
/// <summary>
/// Establecer valor
/// </summary>
/// <param name="seccion">Sección</param>
/// <param name="clave">Clave</param>
/// <param name="valor">Valor a establecer</param>
public static void SetValue(string seccion, string clave, string valor)
{
System.Configuration.Configuration config =
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None ) ;
//Borramos la configuración actual
config.AppSettings.Settings.Remove(seccion + "." + clave ) ;
config.Save(ConfigurationSaveMode.Modified ) ;
//Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings" ) ;
//Grabamos la configuración nueva
config.AppSettings.Settings.Add(seccion + "." + clave, valor ) ;
// Save the configuration file.
config.Save(ConfigurationSaveMode.Modified ) ;
//Force a reload of the changed section.
ConfigurationManager.RefreshSection("appSettings" ) ;
}
/// <summary>
/// Obtener valor
/// </summary>
/// <param name="seccion">Sección</param>
/// <param name="clave">Clave</param>
/// <param name="predeterminado">Valor predeterminado (en caso de no encontrarse)</param>
/// <returns>Valor encontrado</returns>
public static string GetValue(string seccion, string clave, string predeterminado)
{
string _return = "";
try{
_return=ConfigurationManager.AppSettings[seccion + "." + clave];
if(_return=="" ){
_return = predeterminado;
}
return(_return ) ;
}
catch{
return(predeterminado ) ;
}
}
/// <summary>
/// Obtener valor
/// </summary>
/// <param name="seccion">Sección</param>
/// <param name="clave">Clave</param>
/// <returns>Valor encontrado</returns>
public static string GetValue(string seccion, string clave)
{
string _return = "";
try
{
_return = ConfigurationManager.AppSettings[seccion + "." + clave];
if (_return == "" )
{
_return = "";
}
return (_return ) ;
}
catch
{
return ("" ) ;
}
}
}
Explicación:
Tenemos dos procesos, uno para leer (GetValue) y otro para escribir(SetValue).
Para leer no hay complejidad, solamente utilizamos la instrucción "ConfigurationManager.AppSettings" que es la encagada de traernos un valor del archivo de configuración.
En el caso de escribir, si es un poco complejo ya que batallé mucho para "actualizar" el dato que se iba a grabar; lo solucioné borrandolo y escribiendolo de nuevo "config.AppSettings.Settings.Remove".
En si lo que hago es utilizar las clases ya proporcionadas por el .NetFramework dandole una lógica de lectura/escritura segun el caso.
Bueno, esto es todo, visiten mi blog:
Si desean que les haga un sistema/aplicación/programa: