Procedimiento para crear la configuración de la aplicación

Usando código administrado, puede crear una nueva opción de configuración de la aplicación y enlazarla a las propiedades o a los controles del formulario para que esta opción de configuración se cargue y se guarde automáticamente en tiempo de ejecución.

En el siguiente procedimiento, creará manualmente una clase contenedora que deriva de ApplicationSettingsBase. A esta clase se agrega una propiedad públicamente accesible para cada opción de configuración de la aplicación que desee exponer.

También puede realizar este procedimiento con un mínimo de código en el diseñador de Visual Studio. Vea también Cómo crear una configuración de aplicación mediante el diseñador.

Para crear una nueva opción de configuración de la aplicación mediante programación

  1. Agregue una nueva clase al proyecto y cámbiele el nombre. Para este procedimiento, llamaremos a esta clase MyUserSettings. Cambie la definición de clase para que la clase derive de ApplicationSettingsBase.

  2. Defina una propiedad en esta clase contenedora para cada opción de configuración de la aplicación que necesite y aplique esa propiedad con los atributos ApplicationScopedSettingAttribute o UserScopedSettingAttribute, según el ámbito de la opción de configuración. Para obtener más información sobre el ámbito de la opción configuración, consulte Introducción a la configuración de la aplicación. En este momento, el código debe ser similar al siguiente:

    using System;
    using System.Configuration;
    using System.Drawing;
    
    public class MyUserSettings : ApplicationSettingsBase
    {
        [UserScopedSetting()]
        [DefaultSettingValue("white")]
        public Color BackgroundColor
        {
            get
            {
                return ((Color)this["BackgroundColor"]);
            }
            set
            {
                this["BackgroundColor"] = (Color)value;
            }
        }
    }
    
    Imports System.Configuration
    
    Public Class MyUserSettings
        Inherits ApplicationSettingsBase
        <UserScopedSetting()> _
        <DefaultSettingValue("white")> _
        Public Property BackgroundColor() As Color
            Get
                BackgroundColor = Me("BackgroundColor")
            End Get
    
            Set(ByVal value As Color)
                Me("BackgroundColor") = value
            End Set
        End Property
    End Class
    
  3. Cree una instancia de esta clase contenedora en la aplicación. Normalmente será un miembro privado del formulario principal. Ahora que ha definido la clase, necesita enlazarla a una propiedad; en este caso, la propiedad BackColor del formulario. Puede hacerlo en el controlador de eventos Load del formulario.

    MyUserSettings mus;
    
    private void Form1_Load(object sender, EventArgs e)
    {
        mus = new MyUserSettings();
        mus.BackgroundColor = Color.AliceBlue;
        this.DataBindings.Add(new Binding("BackColor", mus, "BackgroundColor"));
    }
    
    Dim Mus As MyUserSettings
    
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Mus = New MyUserSettings()
        Mus.BackgroundColor = Color.AliceBlue
        Me.DataBindings.Add(New Binding("BackColor", Mus, "BackgroundColor"))
    End Sub
    
  4. Si proporciona una manera de cambiar la configuración en tiempo de ejecución, tendrá que guardar la configuración actual del usuario en el disco cuando el formulario se cierre o los cambios se perderán.

    //Make sure to hook up this event handler in the constructor!
    //this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
        void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            mus.Save();
        }
    
    Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Mus.Save()
    End Sub
    

    Ya ha creado una nueva opción de configuración de la aplicación y la ha enlazado a la propiedad especificada.

En el ejemplo siguiente se muestra un archivo de configuración de la aplicación que define dos opciones de configuración de ámbito de aplicación y dos opciones de configuración de ámbito de usuario. Debe agregar los nombres para la configuración que creó como entradas en el elemento <configSections> en la parte superior del archivo.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
    </sectionGroup>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="WindowsApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" />
    </sectionGroup>
  </configSections>
  <applicationSettings>
    <WindowsApplication1.Properties.Settings>
      <setting name="Cursor" serializeAs="String">
        <value>Default</value>
      </setting>
      <setting name="DoubleBuffering" serializeAs="String">
        <value>False</value>
      </setting>
    </WindowsApplication1.Properties.Settings>
  </applicationSettings>
  <userSettings>
    <WindowsApplication1.Properties.Settings>
      <setting name="FormTitle" serializeAs="String">
        <value>Form1</value>
      </setting>
      <setting name="FormSize" serializeAs="String">
        <value>595, 536</value>
      </setting>
    </WindowsApplication1.Properties.Settings>
  </userSettings>
</configuration>

Seguridad de .NET Framework

El proveedor de configuración predeterminado, LocalFileSettingsProvider, conserva la información en archivos de configuración como texto sin formato. Esto limita la seguridad a la seguridad de acceso a archivos proporcionada por el sistema operativo para el usuario actual. Por este motivo, debe tener cuidado con la información almacenada en los archivos de configuración. Por ejemplo, un uso común de la configuración de la aplicación es almacenar cadenas de conexión que apuntan al almacén de datos de la aplicación. Sin embargo, por motivos de seguridad, esas cadenas no deberían incluir contraseñas. Para obtener más información sobre las cadenas de conexión, consulte SpecialSetting.

Consulte también