viernes, 8 de julio de 2016

Receta C# No. 7-1: Agregar un Control Sin Usar el Diseñador de Visual Studio

Índice

1. Introducción
2. Palabras Clave
3. Problema
4. Solución
5. Discusión de la Solución
5.1 Control System.Windows.WinForms.CheckBox
5.2 Control Telerik.WinControls.UI.RadCheckBox
5.3 Control DevExpress.XtraEditors.CheckEdit
6. Práctica: Agregación Control en Forma Dinámica
7. Conclusiones
8. Literatura & Enlaces

1. Introducción

A partir de esta receta C# se da inicio a la serie número 7 -Formularios de Windows-. Microsoft .NET Framework cuenta con una aplicación específica para la creación de aplicaciones con interfaz gráfica de usuario (Graphical User Interface o GUI) conocida comúnmente como WinForms. El propósito de esta nueva serie es conocer los conceptos fundamentales para empezar a construir GUIs que faciliten el tratamiento de datos a sus usuarios. No sólo se hará hincapié en WinForms de .NET Framework, sino que además se aprovechará la existencia de otras implementaciones como Telerik y DevExpress con el objetivo de dar a conocer al programador las opciones que existen en este contexto.


Los temas generales a tratar en estas recetas comprende: 
  • Agregación de controles sin el uso del diseñador de Visual Studio.
  • Vínculo de fuente de datos a controles.
  • Procesamiento genérico de controles.
  • Seguimiento de formularios MDI.
  • Almacenamiento de configuración de usuario y de aplicación.
  • Obtención del elemento usado más reciente en una lista.
  • Validación de la entrada de usuario.
  • Implementación de autocompletado.
  • Ordenamiento de una lista.
  • Manejo de controles en un layout.
  • Creación y manejo de menús contextuales.
  • Soporte multi-lenguaje.
  • Configuración del aspecto y comportamiento de formularios.
  • Animación de icono en la bandeja de entrada de la barra de tareas de Windows.
  • Soporte de arrastrar y soltar.
  • Multithreading en aplicaciones con interfaz gráfica de usuario.
  • Agregación de contenido Web a través de controles.
  • Relación entre WPF y WinForms.
En esta primera receta el programador de C# se concentra en la creación de controles de interfaz gráfica de usuario sin recurrir al uso del diseñador visual de Visual Studio. El desarrollo práctico de esta receta se focaliza en tres alternativas: estándar WinForms, controles de soporte de Telerik y DevExpress.

2. Palabras Clave

  • Control
  • DevExpress
  • Diseñador Visual
  • GUI
  • Telerik
  • Visual Studio
  • WinForms

3. Problema

Agregar una control a un formulario sin usar el diseñador visual integrado de Visual Studio.

4. Solución

El namespace System.Windows.Forms cuenta con clases para controles de interfaz gráfica de usuario.

5. Discusión de la Solución

5.1 Control System.Windows.Controls.CheckBox

Este control representa una casilla de comprobación que puede estar en activado, desactivado e indeterminado ("CheckBox Class", 2016).

En esta receta C# se utiliza un proyecto de tipo Windows Forms donde se crean de manera dinámica hasta 12 objetos CheckBox.

5.2 Control Telerik.WinControls.UI.RadCheckBox

La suite de controles WinForms de Telerik también cuenta con una implementación para este control de comprobación: RadCheckBox ("RadCheckBox Class", 2016).

[Nota: Desde la página oficial de Telerik se puede descargar una versión totalmente funcional de esta suite: Telerik UI for WinForms.]

5.3 Control DevExpress.XtraEditors.CheckEdit

Al igual que los dos juegos de controles visuales anteriores, la suite DevExpress cuenta con el control CheckEdit ("CheckEdit Class", 2016).

[Nota: En el tutorial Instalación de Componentes Visuales DevExpress para Visual Studio 2013 se explica el paso a paso de la instalación de esta suite.]

6. Práctica: Agregación Control de Forma Dinámica

La siguiente receta está desarrollada en tres diferentes formas: 
  1. CheckBox
  2. RadCheckBox, y 
  3. CheckEdit
El método Onload(EventArgs) para los tres variaciones de los controles realiza estas operaciones: 
  • Línea 19: Invoca el método OnLoad() para que se dispare correctamente este evento sobrescrito.
  • Líneas 22-27: Definición de arreglo de cadenas de caracteres con nombres de tecnologías relacionadas con Microsoft.
  • Línea 31: Asegura que la lógica de agregación de controles de forma dinámica sea correcta.
  • Línea 35: Variable auxiliar para controlar el posicionamiento horizontal de cada objeto CheckBox (RadCheckBox o CheckEdit).
  • Líneas 38-53: Agrega cada uno de los objetos al control contenedor:
    • Estándar WinForms: System.Windows.Forms.Panel
    • Telerik: Telerik.WinControls.UI.RadScrollablePanel, y 
    • DevExpress: DevExpress.XtraEditors.XtraScrollableControl.
  • Línea 57: Restablece el control contenedor para continuar con la lógica del control.
Aplicación en ejecución: 
WinForms
Figura 1. WinForms.
Estos dos archivos en C# son las versiones con controles de Telerik y DevExpress

Versión Telerik:

Archivo C# R0701.cs [Enlace alternativo][Enlace alternativo]: 

Aplicación en ejecución: 
WinForms en Telerik
Figura 2. WinForms en Telerik.

Versión DevExpress

Archivo C# R0701.cs [Enlace alternativo][Enlace alternativo]: 

Aplicación en ejecución: 
WinForms en DevExpress
Figura 3. WinForms en DevExpress.

7. Conclusiones

Se ha demostrado que es posible prescindir del diseñador de Visual Studio para la creación de controles. Esto ocurre de forma dinámica. Es importante siempre recordar que es necesario invocar SuspendLayout() y ResumeLayout() para optimizar la agregación dinámica de controles.

En la próxima receta se ilustra cómo almacenar datos con un control.

8. Literatura & Enlaces

Jones, A., Freeman (2010). Visual C# 2010 Recipes: A Problem-Solution Approach. United States: Apress.
CheckBox Class (System.Windows.Controls) (2016, julio 8). Recuperado desde: https://msdn.microsoft.com/en-us/library/system.windows.controls.checkbox%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
RadCheckBox Class (2016, julio 8). Recuperado desde: http://docs.telerik.com/devtools/winforms/api/html/T_Telerik_WinControls_UI_RadCheckBox.htm
WinForms Controls | Telerik UI for WinForms (2016, julio 8). Recuperado desde: http://www.telerik.com/products/winforms.aspx
CheckEdit Class | WinForms Controls | DevExpress Help (2016, julio 8). Recuperado desde: https://documentation.devexpress.com/#WindowsForms/clsDevExpressXtraEditorsCheckEdittopic
Instalación de Componentes Visuales DevExpress para Visual Studio 2013 (2016, julio 8). Recuperado desde: https://ortizol.blogspot.com.co/2014/05/instalacion-de-componentes-visuales.html


V

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.