Evaluar y enviar comentarios
Contraer todo/Expandir todo Contraer todo
Esta página es específica de
Microsoft Visual Studio 2005/.NET Framework 2.0

Hay además otras versiones disponibles para:
Biblioteca de clases de .NET Framework
ApplicationSettingsBase (Clase)

Nota: esta clase es nueva en la versión 2.0 de .NET Framework.

Actúa como clase base para derivar clases contenedoras concretas con el fin de implementar la característica de configuración de aplicación en las aplicaciones de formularios Windows Forms.

Espacio de nombres: System.Configuration
Ensamblado: System (en system.dll)

Visual Basic (Declaración)
Public MustInherit Class ApplicationSettingsBase
    Inherits SettingsBase
    Implements INotifyPropertyChanged
Visual Basic (Uso)
Dim instance As ApplicationSettingsBase
C#
public abstract class ApplicationSettingsBase : SettingsBase, INotifyPropertyChanged
C++
public ref class ApplicationSettingsBase abstract : public SettingsBase, INotifyPropertyChanged
J#
public abstract class ApplicationSettingsBase extends SettingsBase implements INotifyPropertyChanged
JScript
public abstract class ApplicationSettingsBase extends SettingsBase implements INotifyPropertyChanged

ApplicationSettingsBase agrega las funciones siguientes a la clase SettingsBase que utilizan las aplicaciones basadas en Web:

  • Capacidad de detectar atributos en una clase contenedora de configuración derivada. ApplicationSettingsBase admite el uso del modelo declarativo para las propiedades de clase contenedora, tal como se describe más adelante.

  • Métodos Save y Reload de nivel superior.

  • Eventos de validación adicionales que se pueden controlar para garantizar la exactitud de las configuraciones individuales.

En la arquitectura de configuración de aplicación, para obtener acceso a un grupo de propiedades de configuración es necesario derivar de ApplicationSettingsBase una clase contenedora concreta. La clase contenedora personaliza ApplicationSettingsBase de las maneras siguientes:

  • Para cada propiedad de configuración a la que se va a obtener acceso, se agrega a la clase contenedora una propiedad pública correspondiente con establecimiento inflexible de tipos. Esta propiedad tiene los descriptores de acceso get y set para los valores de aplicación de lectura y escritura, pero sólo un descriptor de acceso get para los valores de sólo lectura.

  • Se deben aplicar atributos adecuados a las propiedades públicas de la clase contenedora para indicar las características de la propiedad de configuración, como, por ejemplo, el ámbito de la configuración (aplicación o usuario), si la configuración debe admitir la movilidad, el valor predeterminado para la configuración, el proveedor de configuración que se va a utilizar, etc. Es necesario que cada propiedad especifique su ámbito, utilizando ApplicationScopedSettingAttribute o UserScopedSettingAttribute. Si se utiliza el objeto LocalFileSettingsProvider predeterminado, la configuración de ámbito de la aplicación será de sólo lectura..

La clase ApplicationSettingsBase utiliza la reflexión para detectar estos atributos en tiempo de ejecución. La mayor parte de esta información se pasa a la capa de proveedor de configuración, que es responsable del almacenamiento, el formato de persistencia, etc.

Cuando una aplicación tiene varias clases contenedoras de configuración, cada clase define un grupo de configuración. Cada grupo tiene las características siguientes:

  • Un grupo puede contener cualquier número o tipo de valores de propiedad.

  • Si no se establece explícitamente el nombre del grupo decorando la clase contenedora con un objeto SettingsGroupNameAttribute, se genera un nombre automáticamente.

De manera predeterminada, todas las aplicaciones basadas en cliente utilizan la clase LocalFileSettingsProvider para proporcionar el almacenamiento. Si se desea un proveedor de configuración alternativo, la propiedad o la clase contenedora se deben decorar con un objeto SettingsProviderAttribute correspondiente.

Para obtener más información sobre cómo utilizar la configuración de aplicación, vea Configuración de la aplicación en formularios Windows Forms.

En el ejemplo de código siguiente se muestra el uso de la configuración de aplicación para conservar los atributos siguientes del formulario principal: ubicación, tamaño, color de fondo y texto de la barra de título. Todos estos atributos se conservan como propiedades de una única configuración de aplicación en la clase FormSettings, y se denominan, respectivamente, FormLocation, FormSize, FormBackColor y FormText. Salvo por FormText, todas tienen un enlace de datos a sus propiedades de formulario asociadas y un valor de configuración predeterminado, DefaultSettingValueAttribute, aplicado.

El formulario contiene cuatro controles secundarios que tienen los nombres y funciones siguientes:

  • Un botón denominado btnBackColor, que se utiliza para mostrar el cuadro de diálogo común Color.

  • Un botón denominado btnReload, que se utiliza para recargar (Reload) la configuración de la aplicación.

  • Un botón denominado btnReset, que se utiliza para reestablecer (Reset) la configuración de la aplicación.

  • Un cuadro de texto denominado tbStatus, que se utiliza para mostrar información de estado sobre el programa.

Tenga en cuenta que, después de cada ejecución de la aplicación, se anexa un carácter de punto adicional al texto de título del formulario.

C#
partial class Form1 : Form
{
    private FormSettings frmSettings1 = new FormSettings();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        //Associate settings property event handlers.
        frmSettings1.SettingChanging += new SettingChangingEventHandler(
                                            frmSettings1_SettingChanging);
        frmSettings1.SettingsSaving += new SettingsSavingEventHandler(
                                            frmSettings1_SettingsSaving);

        //Data bind settings properties with straightforward associations.
        Binding bndBackColor = new Binding("BackColor", frmSettings1, 
            "FormBackColor", true, DataSourceUpdateMode.OnPropertyChanged);
        this.DataBindings.Add(bndBackColor);
        Binding bndSize = new Binding("Size", frmSettings1, "FormSize", 
            true, DataSourceUpdateMode.OnPropertyChanged);
        this.DataBindings.Add(bndSize);
        Binding bndLocation = new Binding("Location", frmSettings1, 
            "FormLocation", true, DataSourceUpdateMode.OnPropertyChanged);
        this.DataBindings.Add(bndLocation);

        //For more complex associations, manually assign associations.
        String savedText = frmSettings1.FormText;
        //Since there is no default value for FormText.
        if (savedText != null)
            this.Text = savedText;
    }

    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        //Synchronize manual associations first.
        frmSettings1.FormText = this.Text + '.';
        frmSettings1.Save();
    }

    private void btnBackColor_Click(object sender, EventArgs e)
    {
        if (DialogResult.OK == colorDialog1.ShowDialog())
        {
            Color c = colorDialog1.Color;
            this.BackColor = c;
        }
    }

    private void btnReset_Click(object sender, EventArgs e)
    {
        frmSettings1.Reset();
        this.BackColor = SystemColors.Control;
    }

    private void btnReload_Click(object sender, EventArgs e)
    {
        frmSettings1.Reload();
    }

    void frmSettings1_SettingChanging(object sender, SettingChangingEventArgs e)
    {
        tbStatus.Text = e.SettingName + ": " + e.NewValue;
    }

    void frmSettings1_SettingsSaving(object sender, CancelEventArgs e)
    {
        //Should check for settings changes first.
        DialogResult dr = MessageBox.Show(
                        "Save current values for application settings?",
                        "Save Settings", MessageBoxButtons.YesNo);
        if (DialogResult.No == dr)
        {
            e.Cancel = true;
        }
    }

}

//Application settings wrapper class
sealed class FormSettings : ApplicationSettingsBase
{
    [UserScopedSettingAttribute()]
    public String FormText
    {
        get { return (String)this["FormText"]; }
        set { this["FormText"] = value; }
    }

    [UserScopedSetting()]
    [DefaultSettingValueAttribute("0, 0")]
    public Point FormLocation
    {
        get { return (Point)(this["FormLocation"]); }
        set { this["FormLocation"] = value; }
    }

    [UserScopedSetting()]
    [DefaultSettingValueAttribute("225, 200")]
    public Size FormSize
    {
        get { return (Size)this["FormSize"]; }
        set { this["FormSize"] = value; }
    }

    [UserScopedSetting()]
    [DefaultSettingValueAttribute("LightGray")]
    public Color FormBackColor
    {
        get { return (Color)this["FormBackColor"]; }
        set { this["FormBackColor"] = value; }
    }

}
 
C++
    FormSettings ^ formSettings;

public:
    AppSettingsForm()
    {
        formSettings = gcnew FormSettings;
        InitializeComponent();
    }

private:
    void AppSettingsForm_Load(Object^ sender, EventArgs^ e)
    {
        //Associate settings property event handlers.
        formSettings->SettingChanging += gcnew SettingChangingEventHandler(
            this, &AppSettingsForm::FormSettings_SettingChanging);
        formSettings->SettingsSaving += gcnew SettingsSavingEventHandler(
            this,&AppSettingsForm::FormSettings_SettingsSaving);

        //Data bind settings properties with straightforward associations.
        Binding^ backColorBinding = gcnew Binding("BackColor", 
            formSettings, "FormBackColor", true, 
            DataSourceUpdateMode::OnPropertyChanged);
        this->DataBindings->Add(backColorBinding);
        Binding^ sizeBinding = gcnew Binding("Size", formSettings,
            "FormSize", true, DataSourceUpdateMode::OnPropertyChanged);
        this->DataBindings->Add(sizeBinding);
        Binding^ locationBinding = gcnew Binding("Location", formSettings,
            "FormLocation", true, DataSourceUpdateMode::OnPropertyChanged);
        this->DataBindings->Add(locationBinding);

        //For more complex associations, manually assign associations.
        String^ savedText = formSettings->FormText;
        //Since there is no default value for FormText.
        if (savedText != nullptr)
        {
            this->Text = savedText;
        }
    }

private:
    void AppSettingsForm_FormClosing(Object^ sender,
        FormClosingEventArgs^ e)
    {
        //Synchronize manual associations first.
        formSettings->FormText = this->Text + '.';
        formSettings->Save();
    }

private:
    void BackColorButton_Click(Object^ sender, EventArgs^ e)
    {
        if (::DialogResult::OK == colorDialog->ShowDialog())
        {
            Color color = colorDialog->Color;
            this->BackColor = color;
        }
    }

private:
    void ResetButton_Click(Object^ sender, EventArgs^ e)
    {
        formSettings->Reset();
        this->BackColor = SystemColors::Control;
    }

private:
    void ReloadButton_Click(Object^ sender, EventArgs^ e)
    {
        formSettings->Reload();
    }

private:
    void FormSettings_SettingChanging(Object^ sender,
        SettingChangingEventArgs^ e)
    {
        statusDisplay->Text = e->SettingName + ": " + e->NewValue;
    }

private:
    void FormSettings_SettingsSaving(Object^ sender,
        CancelEventArgs^ e)
    {
        //Should check for settings changes first.
        ::DialogResult^ dialogResult = MessageBox::Show(
            "Save current values for application settings?",
            "Save Settings", MessageBoxButtons::YesNo);
        if (::DialogResult::No == dialogResult)
        {
            e->Cancel = true;
        }
    }
};
System.Object
   System.Configuration.SettingsBase
    System.Configuration.ApplicationSettingsBase
Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 SP4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0
Contenido de la comunidad   ¿Qué es Community Content?
Agregar contenido nuevo RSS  Anotaciones
Processing
© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker