Cómo: Validar la configuración de la aplicación
Actualización: noviembre 2007
Este tema muestra cómo validar la configuración de la aplicación antes de guardarse.
Dado que la configuración de la aplicación tiene establecimiento inflexible de tipos, puede confiar en que los usuarios no puedan asignar datos de un tipo incorrecto a una configuración determinada. Sin embargo, un usuario podría intentar asignar un valor a un valor de configuración que se encuentre fuera de los límites aceptados, por ejemplo, proporcionar una fecha de nacimiento que se produzca en el futuro. ApplicationSettingsBase, la clase primaria de todas las clases de configuración de la aplicación, expone cuatro eventos para habilitar la comprobación de estos límites. Al controlar estos eventos se incluye todo el código de la validación en una ubicación única, en lugar de esparcirlo a lo largo del proyecto.
El evento que utilice depende del momento en que necesite validar la configuración, tal como se describe en la siguiente tabla.
Evento |
Uso y frecuencia |
---|---|
Se produce después de la carga inicial de un grupo de propiedades de configuración. Utilice este evento para validar los valores iniciales del grupo de propiedades completo antes de utilizarse dentro de la aplicación. |
|
Se produce antes de cambiar el valor de una propiedad de configuración única. Utilice este evento para validar una propiedad única antes de modificarla. Puede proporcionar comentarios inmediatos a los usuarios en relación con sus acciones y opciones. |
|
Se produce después de cambiar el valor de una propiedad de configuración única. Utilice este evento para validar una propiedad única después de modificarla. Este evento raramente se utiliza para la validación a menos que se requiera un proceso de validación largo y asincrónico. |
|
Se produce antes de almacenar el grupo de propiedades de configuración. Utilice este evento para validar los valores del grupo de propiedades completo antes de guardarlos 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 controlando sólo el evento SettingChanging.
Un controlador de eventos generalmente realiza una de las acciones siguientes cuando detecta un valor no válido:
Automáticamente proporciona un valor conocido como correcto, como el valor predeterminado.
Vuelve a solicitar información al usuario del código del servidor.
Para los eventos producidos antes de sus acciones asociadas, como SettingChanging y SettingsSaving, utiliza el argumento CancelEventArgs para cancelar la operación.
Para obtener más información sobre el control de eventos, vea Información general sobre controladores de eventos (Formularios Windows Forms).
Los procedimientos siguientes muestran cómo probar con una fecha de nacimiento válida utilizando SettingChanging o el evento SettingsSaving. Los procedimientos se han escrito teniendo en cuenta que ya ha creado la configuración de la aplicación; en este ejemplo, se comprobarán los límites de un valor de configuración denominado DateOfBirth. Para obtener más información acerca de la creación de valores de configuración, vea 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 (la instancia del contenedor) de configuración de la aplicación finalizando uno de los siguientes puntos:
Si ha creado un valor de configuración utilizando el cuadro de diálogo Configuración de la aplicación de Visual Studio del Editor de propiedades, puede recuperar el objeto de configuración de aplicación generado para su lenguaje mediante la expresión siguiente.
Configuration.Settings.Default
MySettings.Default
O bien
Si es desarrollador de Visual Basic y ha creado su aplicación mediante el Diseñador de proyectos, puede recuperar los valores de configuración utilizando My.Settings (Objeto).
O bien
Si ha creado los valores de configuración derivándolos directamente de ApplicationSettingsBase, necesita crear manualmente instancias de su clase.
MyCustomSettings settings = new MyCustomSettings();
Dim Settings as New MyCustomSettings()
Los procedimientos siguientes se escribieron suponiendo que el objeto de configuración de la aplicación se obtuvo finalizando el último punto de este procedimiento.
Para validar la configuración de la aplicación cuando se está modificando un valor de configuración
Si es desarrollador de C#, en el formulario o el evento Load del control, agregue un controlador de eventos para el evento SettingChanging.
O bien
Si es desarrollador de Visual Basic, debería 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
Defina el controlador de eventos y escriba el código dentro de él para realizar la comprobación de los límites de la fecha de nacimiento.
private void MyCustomSettings_SettingChanging(Object sender, SettingChangingEventArgs e) { if (e.SettingName.Equals("DateOfBirth")) { Date newDate = (Date)e.NewValue; If (newDate > Date.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 almacena
Agregue un controlador de eventos para el evento SettingsSaving en el formulario o el evento Load del control.
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
Defina el controlador de eventos y escriba el código dentro de él para realizar la comprobación de los límites de 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
Vea también
Tareas
Cómo: Crear la configuración de la aplicación