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

En este tema se muestra cómo validar la configuración de la aplicación antes de conservarla.

Como la configuración de la aplicación está fuertemente tipada, tiene cierta confianza en que los usuarios no puedan asignar los datos de un tipo incorrecto a una configuración especificada. Sin embargo, aún es posible que un usuario intente asignar un valor a una configuración que se encuentre fuera de los límites aceptables (por ejemplo, proporcionar una fecha de nacimiento perteneciente al futuro). ApplicationSettingsBase, la clase principal de todas las clases de configuración de la aplicación, expone cuatro eventos para habilitar la comprobación de esos límites. Al controlarse estos eventos, se incluye todo el código de validación en una sola ubicación, en lugar de dispersarse por todo el proyecto.

El evento que use depende de cuándo es necesario validar la configuración, como se describe en la siguiente tabla.

Evento Repetición y uso
SettingsLoaded Se produce después de la carga inicial de un grupo de propiedades de configuración.

Use este evento para validar los valores iniciales de todo el grupo de propiedades antes de que se utilicen dentro de la aplicación.
SettingChanging Se produce antes de cambiarse el valor de una sola propiedad de configuración.

Use este evento para validar una sola propiedad antes de que se cambie. Puede proporcionar comentarios inmediatos a los usuarios relacionados con sus acciones y opciones.
PropertyChanged Se produce después de cambiarse el valor de una sola propiedad de configuración.

Use este evento para validar una sola propiedad tras cambiarse. Este evento no suele utilizarse para la validación a menos que sea necesario un proceso de validación prolongado y asincrónico.
SettingsSaving Se produce antes de almacenarse el grupo de propiedades de configuración.

Use este evento para validar los valores de todo el grupo de propiedades antes de que se conserven en el disco.

Normalmente, no utilizará todos estos eventos dentro de la misma aplicación con fines de validación. Por ejemplo, a menudo es posible cumplir todos los requisitos de validación si se controla solo el evento SettingChanging.

Un controlador de eventos suele realizar una de las siguientes acciones al detectar un valor no válido:

  • Proporciona automáticamente un valor conocido como correcto, como el valor predeterminado.

  • Vuelve a consultar al usuario del código de servidor para obtener información.

  • En el caso de los eventos provocados antes de sus acciones asociadas, como SettingChanging y SettingsSaving, use el argumento CancelEventArgs para cancelar la operación.

Para más información sobre el control de eventos, consulte Información general sobre controladores de eventos.

Los siguientes procedimientos muestran cómo comprobar la validez de una fecha de nacimiento mediante los eventos SettingChanging y SettingsSaving. Los procedimientos se han escrito partiendo de la base de que ya ha creado la configuración de la aplicación; en este ejemplo, realizaremos una comprobación de los límites en un valor de configuración denominado DateOfBirth. Para más información sobre la creación de la configuración, consulte How to: Create Application Settings (Cómo: Crear la configuración de la aplicación).

Para obtener el objeto de configuración de la aplicación

  • Obtenga una referencia al objeto de configuración de la aplicación (la instancia del contenedor) completando uno de los siguientes elementos con viñetas:

    • Si ha creado la configuración con el cuadro de diálogo Visual Studio Application Settings (Configuración de la aplicación de Visual Studio) en el Editor de propiedades, puede recuperar el objeto de configuración predeterminado generado para su lenguaje a través de la siguiente expresión.

      Properties.Settings.Default
      
      MySettings.Default
      

      O bien

    • Si es desarrollador de Visual Basic y ha creado la configuración de la aplicación mediante el Diseñador de proyectos, puede recuperar la configuración con My.Settings (Objeto).

      O bien

    • Si ha creado la configuración derivándola de ApplicationSettingsBase directamente, debe crear una instancia de la clase de forma manual.

      MyCustomSettings settings = new MyCustomSettings();
      
      Dim Settings as New MyCustomSettings()
      

Los siguientes procedimientos se han escrito partiendo de la base de que el objeto de configuración de la aplicación se ha obtenido completando el último elemento con viñetas de este procedimiento.

Para validar la configuración de la aplicación al cambiar un valor de configuración

  1. Si es desarrollador de C#, en el formulario o en el evento Load del control, agregue un controlador de eventos para el evento SettingChanging.

    O bien

    Si es desarrollador de Visual Basic, debe declarar la variable Settings mediante la palabra clave WithEvents.

    public void Form1_Load(Object sender, EventArgs e)
    {
        settings.SettingChanging += new SettingChangingEventHandler(MyCustomSettings_SettingChanging);
    }
    
    Public Sub Form1_Load(sender as Object, e as EventArgs)
        AddHandler settings.SettingChanging, AddressOf MyCustomSettings_SettingChanging
    End Sub
    
  2. Defina el controlador de eventos y escriba el código dentro de él para realizar una comprobación de los límites en la fecha de nacimiento.

    private void MyCustomSettings_SettingChanging(Object sender, SettingChangingEventArgs e)
    {
        if (e.SettingName.Equals("DateOfBirth"))
        {
            var newDate = (DateTime)e.NewValue;
            if (newDate > DateTime.Now)
            {
                e.Cancel = true;
                // Inform the user.
            }
        }
    }
    
    Private Sub MyCustomSettings_SettingChanging(sender as Object, e as SettingChangingEventArgs) Handles Settings.SettingChanging
        If (e.SettingName.Equals("DateOfBirth")) Then
            Dim NewDate as Date = CType(e.NewValue, Date)
            If (NewDate > Date.Now) Then
                e.Cancel = True
                ' Inform the user.
            End If
        End If
    End Sub
    

Para validar la configuración de la aplicación al guardar

  1. En el formulario o en el evento Load del control, agregue un controlador de eventos para el evento SettingsSaving.

    public void Form1_Load(Object sender, EventArgs e)
    {
        settings.SettingsSaving += new SettingsSavingEventHandler(MyCustomSettings_SettingsSaving);
    }
    
    Public Sub Form1_Load(Sender as Object, e as EventArgs)
        AddHandler settings.SettingsSaving, AddressOf MyCustomSettings_SettingsSaving
    End Sub
    
  2. Defina el controlador de eventos y escriba el código dentro de él para realizar una comprobación de los límites en la fecha de nacimiento.

    private void MyCustomSettings_SettingsSaving(Object sender, SettingsSavingEventArgs e)
    {
        if (this["DateOfBirth"] > Date.Now) {
            e.Cancel = true;
        }
    }
    
    Private Sub MyCustomSettings_SettingsSaving(Sender as Object, e as SettingsSavingEventArgs)
        If (Me["DateOfBirth"] > Date.Now) Then
            e.Cancel = True
        End If
    End Sub
    

Consulte también