Validación de controles
Validación de controles
Los controles Windows vienen provistos de un potente y flexible sistema de validación, que nos permitirá comprobar si el usuario introduce los valores adecuados en un control, de modo que le permitiremos pasar el foco a otro control, u obligarle a permanece en el actual hasta que su valor no sea correcto.
En este esquema de validación, los miembros principales de la clase Control que intervienen son los siguientes.
• CausesValidation. Esta propiedad nos permite establecer un valor lógico, de manera que cuando un control capture el foco, provocará la validación para otro control del formulario que
la requiera. • Validating. Este evento se produce para que podamos escribir el código de validación
oportuno en un manipulador de evento. El procedimiento manejador de evento recibe entre sus parámetros un objeto de tipo CancelEventArgs, por lo que si la validación no es correcta, asignaremos False a la propiedad Cancel de dicho objeto.
• Validated. Este evento se produce en el caso de que la validación haya tenido éxito. El proyecto de ejemplo ValidarControl (hacer clic aquí para acceder a este ejemplo) consta de un
formulario con tres controles TextBox. Todos tienen el valor True en su propiedad CausesValidation, y adicionalmente, para el control txtImporte hemos escrito el procedimiento que actuará como manipulador del evento Validating; con ello impediremos el paso desde dicho control a los demás hasta que su contenido no sea numérico. Si pasamos la validación, se ejecutará en ese caso el código del evento Validated. Veamos estos manipuladores de evento en el Código fuente 520.
Private Sub txtImporte_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtImporte.Validating
If Not IsNumeric(Me.txtImporte.Text) Then e.Cancel = True MessageBox.Show("Se requiere un número")
End If
End Sub
Código fuente 520
La Figura 312 muestra esta aplicación en funcionamiento, durante la ejecución del evento de validación.
En el control txtFecha por otro lado, podemos teclear cualquier valor, aunque no sea fecha, ya que no proporcionamos manipuladores de evento para validar su contenido.
© Grupo EIDOS 34. Formularios dependientes y controles avanzados
Cuando escribimos código de validación empleando estos miembros de la clase Control hemos de tener presente el comportamiento, a veces no muy intuitivo, del sistema de validación para controles en los formularios Windows.
Figura 312. Validación de un control.
Como hemos mencionado anteriormente, cuando la propiedad CausesValidation de un control contiene True, al recibir el foco dicho control, se provocará el evento de validación para el control que acaba de perder el foco. Pero si pasamos el foco a un control en el que CausesValidation contiene False, la validación no se producirá sobre el control que acaba de perder el foco.
Esto lo podemos comprobar muy fácilmente sobre nuestro proyecto de ejemplo, asignando al control txtFecha el valor False en su CausesValidation. A partir de ahora, cuando estemos situados en el control txtImporte, si este no contiene un número, se producirá la validación si pasamos el foco a txtNombre, pero no se validará si pasamos a txtFecha.
Parts
» Visual branding biro perjalanan alam (1)
» El manifiesto del ensamblado
» Instalación de Visual Studio .NET
» Grabando texto en un fichero
» Principales elementos en nuestro entorno de trabajo
» Manejo de ventanas adicionales del IDE
» Conceptos mínimos sobre depuración
» Comparación de cadenas en base a un patrón. El operador Like
» Uso de paréntesis para mejorar la legibilidad de expresiones
» Sintaxis de un procedimiento Function
» Sobrecarga de procedimientos
» Abordando un problema mediante programación procedural
» Creación de propiedades para la clase
» Encapsulación a través de propiedades
» Creación de métodos para la clase
» Sobrecarga de métodos o polimorfismo, en una misma clase
» Espacios de nombres (namespaces)
» Acceso a espacios de nombre de otros ensamblados
» Herencia y sobre-escritura de métodos
» Diferencias entre sobrecarga y sobre-escritura en base al tipo de enlace
» Ocultamiento de miembros de una clase
» Comportamiento de las palabras clave Me, MyClass y MyBase ante la sobre-escritura de métodos
» Herencia y métodos constructores
» Clases abstractas o no instanciables
» Comprobación del tipo de un objeto y moldeado (casting)
» Destrucción de objetos y recolección de basura
» Creación y manipulación de estructuras
» Estructuras o clases, ¿cuál debemos utilizar?
» Manipulación de cadenas con la clase String
» Optimizando la manipulación de cadenas con la clase StringBuilder
» Extender las funcionalidades de una clase a través de delegados
» La clase EventArgs, o cómo obtener información del objeto emisor del evento
» Obtención de subarrays a partir de un objeto ArrayList
» Manejo básico de colecciones Hashtable
» Operaciones varias con colecciones Hashtable
» Manipulación de valores en una colección Queue
» Implementando un interfaz para crear una nueva colección
» Manipulación estructurada de errores
» La influencia del orden de los manipuladores de excepciones
» Creación de excepciones personalizadas
» Manipulación de archivos mediante File y FileInfo
» Manipulación de archivos mediante Directory y DirectoryInfo
» Monitorización del sistema de archivos con FileSystemWatcher
» Creación de un formulario básico
» Iniciar el formulario desde Main( )
» Codificación de los eventos de controles
» Selección de texto en un TextBox
» Compartiendo código entre controles
» Crear una clase derivada de un control
» Agregar un proyecto con un formulario derivado
» Crear un formulario heredado desde un proyecto independiente
» Creación de menús desde código
» Detectando el estado de finalización
» Crear un proceso de monitorización
» Comportamiento Modal de formularios
» Formularios dependientes y fijos en primer plano
» Dibujo con las clases Graphics y Pen
» Manipulación de los eventos de pintado en la clase Form
» Manipulando el grado de opacidad del formulario
» Integrando elementos. Un visualizador de gráficos
» Comparativa de ADO /ADO .NET
» Arquitectura de datos desconectados
» Una visión general de ADO .NET
» Espacios de nombres y clases en ADO .NET
» Empleo de Data Binding simple para navegar y editar datos
» Configurar por código las propiedades del DataGrid
Show more