Compartir a través de


Cómo: 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 que se conserven.

Dado que la configuración de la aplicación está fuertemente tipada, puede confiar en que los usuarios no asignarán datos de un tipo incorrecto a una configuración determinada. Sin embargo, un usuario todavía puede intentar asignar un valor a un valor que se encuentra fuera de límites aceptables, por ejemplo, proporcionando una fecha de nacimiento que se produce en el futuro. ApplicationSettingsBase, la clase primaria de todas las clases de configuración de la aplicación, expone cuatro eventos para habilitar dicha comprobación de límites. El control de estos eventos coloca todo el código de validación en una sola ubicación, en lugar de dispersión en todo el proyecto.

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

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 usen en la aplicación.
SettingChanging Se produce antes de cambiar el valor de una sola propiedad de configuración.

Use este evento para validar una sola propiedad antes de cambiarla. Puede proporcionar comentarios inmediatos a los usuarios sobre sus acciones y opciones.
PropertyChanged Se produce después de cambiar el valor de una sola propiedad de configuración.

Use este evento para validar una sola propiedad después de cambiarla. Este evento rara vez se usa para la validación a menos que se requiera un proceso de validación asincrónico largo.
SettingsSaving Se produce antes de almacenar 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 usará 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 controlando solo el SettingChanging evento.

Normalmente, un controlador de eventos realiza una de las siguientes acciones cuando detecta un valor no válido:

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

  • Vuelva a consultar el usuario del código de servidor para obtener información.

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

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

Los procedimientos siguientes muestran cómo probar una fecha de nacimiento válida mediante el SettingChanging evento o SettingsSaving . Los procedimientos se escribieron bajo la suposición de que ya ha creado la configuración de la aplicación; en este ejemplo, realizaremos comprobaciones de límites en una configuración denominada DateOfBirth. Para obtener más información sobre cómo crear la configuración, vea How to: Create Application Settings.

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 contenedora) completando una de las siguientes opciones enumeradas:

    • Si creó la configuración mediante el cuadro de diálogo Configuración de la aplicación de Visual Studio en el Editor de propiedades, puede recuperar el objeto de configuración predeterminado generado para el idioma a través de la siguiente expresión.

      Properties.Settings.Default
      
      MySettings.Default
      

      -o-

    • Si es desarrollador de Visual Basic y creó la configuración de la aplicación mediante el Diseñador de proyectos, puede recuperar la configuración mediante el objeto My.Settings.

      -o-

    • Si ha creado su configuración derivando directamente de ApplicationSettingsBase, debe crear instancias de su clase manualmente.

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

Los procedimientos siguientes se escribieron bajo la suposición de que el objeto de configuración de la aplicación se obtuvo completando el último elemento con viñetas en este procedimiento.

Para validar los ajustes de la aplicación cuando se modifica una configuración

  1. Si eres desarrollador de C#, en el evento Load de tu formulario o control, agrega un controlador de eventos para el evento SettingChanging.

    -o-

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

    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 comprobaciones de 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 cuando se produce un guardado

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

    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 comprobaciones de 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