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.
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
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 laWithEvents
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
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
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
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
.NET Desktop feedback