Índice
1. Introducción2. Palabras Clave
3. Problema
4. Solución
5. Discusión de la Solución
5.1 Jerarquía de herencia
5.2 WinForms nativo
5.3 WinForms de Telerik
5.4 WinForms de DevExpress
6. Práctica: Procesamiento Genérico de Controles
7. Conclusiones
8. Literatura & Enlaces
1. Introducción
En una aplicación con interfaz gráfica de usuario puede resultar necesario llevar a cabo el procesamiento genérico de todos los controles que la integran. Esta receta C# presenta una implementación algorítmica recursiva para cambiar el contenido textual de ciertos controles que conforman un formulario de tres clases homólogas: Form, RadForm y XtraForm.
2. Palabras Clave
- Control
- DevExpress
- GUI
- Interfaz gráfica de usuario
- Procesamiento genérico
- Recursividad
- Telerik
- WinForms
3. Problema
Cambiar la propiedad Text de controles de entrada de texto y presentación de texto.
4. Solución
El programador puede escribir una implementación recursiva para tratar las propiedades comunes en objetos en una jerarquía de herencia.
5. Discusión de la Solución
5.1 Jerarquía de herencia
Una jerarquía de herencia modelada siguiendo los principios de programación orientada a objetos facilita el procesamiento genérico de funciones -método, propiedades-. Esto ocurre con el modelamiento de los controles de interfaz gráfica de usuario.
En esta receta C# se describe cómo procesar de forma genérica-recursiva controles contenidos en un formulario. La implementación recursiva empieza con el control padre (formulario) y efectúa un recorrido por los controles hijo (anidados) hasta alcanzar el nivel de profundidad final.
5.2 WinForms nativo
Los controles usados de la suite nativa de Microsoft .NET Framework comprende los siguientes:
- System.Windows.Forms.Button,
- System.Windows.Forms.Label y
- System.Windows.Forms.TextBox.
Todos estos controles cuentan con la propiedad Text ("Control.Text Property", 2016) debido a que heredan de la clase padre de controles visuales de interfaz gráfica de usuario.
En la sección práctica se demuestra cómo cambiar esta propiedad para controles de tipo TextBox.
5.3 WinForms de Telerik
De esta suite controles visuales para componer formularios (clase RadForm) con tipos se recurrido a los siguientes:
- RadButton,
- RadTextBox, y
- RadLabel.
Estos controles también siguen una jerarquía de herencia que facilita hacer un tratamiento genérico de propiedades.
5.4 WinForms de DevExpress
En lo que respecta a DevExpress algunos de los controles para componer una interfaz gráfica de usuario comprende:
- SimpleButton,
- TextEdit, y
- LabelControl.
6. Práctica: Procesamiento Genérico de Controles
Estas son las implementaciones de esta receta C# en WinForms nativo, Telerik y DevExpress.
6.2 WinForms nativo
El evento personalizado btnProcesarControles_Click(object, EventArgs) (líneas 24-27) invoca al método ProcesarControles() para efectuar el procesamiento genérico y recursivo de los controles que integran la interfaz gráfica de usuario.
- Líneas 36-39: Se valida que el control actual de la invocación recursiva se trate de un TextBox. De ser así se cambia el valor de la propiedad común Text a la cadena vacía (línea 38).
- Líneas 43-46: Por cada control contenido en el objeto Control actual se invoca de forma recursiva al método ProcesarControles().
Este es el resultado de ejecución de esta receta en WinForms nativo:
Animación 1. Ejecución receta R0703 [WinForms]. |
6.2 Telerik
El formulario que conforma esta interfaz gráfica hereda de la clase RadForm. Por otra parte, en el método ProcesarControles(Control) se valida que el control actual sea de tipo RadTextBox (líneas 37-40).
Prueba de ejecución receta sobre esta suite:
Animación 2. Ejecución receta R0703 [Telerik]. |
6.3 DevExpress
Archivo C# R0703.cs [Enlace alternativo][Enlace alternativo]:
En el método ProcesarControles() (líneas 33-47) se evalúa que el control de tipo de dato Control sea DevExpress.XtraEditors.TextEdit. Cuando el predicado es verdadero se asigna a la propiedad Text el valor de cadena vacía.
Prueba de ejecución:
Animación 3. Ejecución receta R0703 [DevExpress]. |
7. Conclusiones
Se ha comprendido que el procesamiento genérico facilita manipular propiedades de controles visuales. Esta receta demostró que a través de una implementación genérica se puede escribir un algoritmo recursivo para recorrer los controles integrales de la GUI.
La próxima receta C# será una gran oportunidad para rastrear los formularios visibles de una aplicación.
8. Literatura & Enlaces
Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.Control.Text Property (System.Windows.Forms) (2016, julio 10). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.windows.forms.control.text(v=vs.110).aspx
V
No hay comentarios:
Publicar un comentario
Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.