Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Con el código administrado, puede crear nuevas opciones de configuración de la aplicación y enlazarlas a propiedades de los controles del formulario o del formulario, de modo que esta configuración se cargue y guarde automáticamente en tiempo de ejecución.
En el procedimiento siguiente, creará manualmente una clase contenedora que deriva de ApplicationSettingsBase. Para esta clase, agregue una propiedad accesible públicamente para cada configuración de aplicación que quiera exponer.
También puede realizar este procedimiento mediante código mínimo en el diseñador de Visual Studio. Vea también How to: Create Application Settings Using the Designer (Cómo: Crear la configuración de la aplicación mediante el Diseñador).
Para crear una nueva configuración de aplicación mediante programación
Agregue una nueva clase al proyecto y cámbiela. Para este procedimiento, llamaremos a esta clase
MyUserSettings
. Cambie la definición de clase para que la clase derive de ApplicationSettingsBase.Defina una propiedad en esta clase contenedora para cada configuración de aplicación que necesite y aplique esa propiedad con ApplicationScopedSettingAttribute o UserScopedSettingAttribute, en función del ámbito de la configuración. Para obtener más información sobre el ámbito de configuración, consulte Introducción a la configuración de la aplicación. Por ahora, el código debe tener este aspecto:
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
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, debe enlazarla a una propiedad; en este caso, la BackColor propiedad del formulario. Puede hacerlo en el controlador de eventos del
Load
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
Si proporciona una manera de cambiar la configuración en tiempo de ejecución, deberá guardar la configuración actual del usuario en el disco cuando se cierre el formulario o, de lo contrario, se perderán estos cambios.
//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
Ahora ha creado correctamente una nueva configuración de aplicación y la ha enlazado a la propiedad especificada.
En el ejemplo siguiente se muestra un archivo de configuración de aplicación que define dos valores de configuración con ámbito de aplicación y dos configuraciones de ámbito de usuario. Debe agregar los nombres de 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 los 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. Debido a esto, se debe tener cuidado con la información almacenada en los archivos de configuración. Por ejemplo, un uso común para 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, debido a problemas de seguridad, estas cadenas no deben incluir contraseñas. Para obtener más información sobre las cadenas de conexión, vea SpecialSetting.
Consulte también
.NET Desktop feedback