Introducción
Hola.
He decidido liberar (aquí en el foro, no en Github) el código fuente que concierne al set de controles de usuario de mi framework de pago ElektroKit; esto es solo un diminuto extracto de todo lo que contiene la inmensa librería...
Este código fuente ha sido escrito en VB.NET y lo he estado desarrollando desde no hace mucho (menos de 3 meses), así que por el momento los controles no ofrecen muchas características especiales, pero creo que el código fuente es una buena base para ayudarles a empezar en el desarrollo de controles de usuario. Pueden tomar cualquiera de estos controles y mejorarlos si así lo desean o darles el uso que ustedes quieran.
En total son 22 controles de usuario, algunos de ellos los he tomado prestado de otros autores para mejorarlos (los créditos y fuentes están en el código fuente).
¡Espero que ojalá esto le sirva de ayuda a alguien!.
Características
El código fuente contiene varias utilidades reutilizables, pero aparte de eso, en lo que concierne a los controles:
ElektroAltitudeSelector y ElektroAngleSelector son dos controles combinables cuya función es proporcionar una forma guiada y visual para seleccionar un ángulo o altitud (como en Photoshop):
ElektroCheckBox es un CheckBox extendido cuya funcionalidad es proveer mayor personalización a este tipo de control, por ejemplo podemos modificar el color de la caja o usar una imagen de fondo.
ElektroColorDialog es un dialogo ColorDialog extendido, el cual provee un evento llamado ElektroColorDialog.SelectedColorChanged con el que podemos suscribirnos al color que se haya clickado en tiempo real en el diálogo. Aparte de esto, podemos asignar un título de ventana del diálogo y la ubicación de la ventana de diálogo mediante la propiedad ElektroColorDialog.StartPosition.
ElektroComboBox es un ComboBox extendido que provee personalización de color:
ElektroDriveComboBox es un ComboBox extendido cuyo propósito es proveer una lista de las unidades disponibles:
ElektroImageComboBox es un ComboBox extendido en el que podemos añadir elementos con imágenes (es el control base de ElektroDriveComboBox); este control proporciona un editor de items personalizado:
ElektroGroupBox es un GroupBox extendido en el que podemos utilizar un CheckBox (ElektroCheckBox) para activar o desactivar todos los elementos del interior. Los colores son personalizables.
ElektroLabel es un Label extendido en el que podemos dibujar un trazo de color sobre las letras.
ElektroLEDLabel y ElektroLEDLabelMulti son dos controles LED con distintos usos. Los controles pueden mostrar números y letras (no todas). Todos los colores son personalizables.
ElektroLEDBulb es un control que simula una bombilla LED con dos estados: activado y desactivado
ElektroListBox es un ListBox extendido que provee una amplia personalización de color.
ElektroListView es un ListView extendido que provee una amplia personalización de color. Nota: este control no está terminado, tiene algunos fallos al dibujar la rejilla.
ElektroNumericUpDown es un NumericUpDown extendido que provee personalización de color.
ElektroPanel es un Panel extendido que provee personalización de color, mejor anti-flicker, y la posibilidad de poder escrolear de forma infinita (en búcle) hacia abajo o hacia arriba.
ElektroPictureBox es un PictureBox extendido que a diferencia de éste, es seleccionable (focusable), y provee mejor anti-flicker.
ElektroProgressBar es un ProgressBar extendido que provee personalización de color y la funcionalidad de mostrar un texto con el progreso de la operación. No produce flicker.
ElektroRichTextBox es un RichTextBox extendido que provee personalización de color, y cuyo comportamiento en tiempo de diseño se asemeja más al de un TextBox. No tiene más características especiales.
ElektroShape es un control parecido a un PictureBox, en el que podemos mostrar imágenes y texto en tres formas predefinidas: Círculo, Cubo y Triángulo.
ElektroStarRate es un control cuya finalidad es proveer un sistema visual para puntuar elementos. La imagen de la estrella es personalizable.
ElektroTextBox es un TextBox extendido que provee personalización de color, y la funcionalidad de asignar un margen al texto.
Descarga
Nótese que en todas las clases de los controles (ej. ElektroTextBox.vb) arriba del todo del código fuente he especificado una región de ayuda para averiguar facilmente que cosas son las que ofrece el control:
Código
#Region " Public Members Summary " #Region " Properties " ' DoubleBuffered As Boolean ' PreventFlickering As Boolean ' TextBox As TextBox ' TextMargins As TextMargins ' Text As String ' ReadOnly As Boolean ' StateEnabled As ElektroTextBoxStateLayout ' StateDisabled As ElektroTextBoxStateLayout ' StateReadOnly As ElektroTextBoxStateLayout #End Region #Region " Events " ' TextChanged As EventHandler(Of EventArgs) #End Region
Así no tienen por qué inspeccionar las miles de lineas del código fuente, basta con mirar esa guía ...aunque acabo de darme cuenta que he omitido mencionar algunos miembros en algunas clases, pero bueno, no importa.
Preguntas Frecuentes
- ¿Cómo utilizo los controles?.
1. Compila el código fuente. Se generarán tres archivos: Elektro.Core.dll, Elektro.Interop.dll y Elektro.UserControls.dll.
2. Crea un nuevo proyecto WindowsForms en VisualStudio, arrastra el archivo Elektro.UserControls.dll y suéltalo en en la caja de controles (ToolBox) de VisualStudio. Se añadirán todos los nuevos controles.
3. Para utilizar ciertas características de algunos controles es necesario añadir una referencia a las librerías Elektro.Core.dll y Elektro.Interop.dll (click derecho: Add Reference)
4. Disfruta de los controles. - ¿Qué versión de .NET Framework necesito para usar los controles?.
En el código fuente hay varias configuraciones de proyecto para compilar bajo .NET Framework 4.0, 4.5 o 4.6. - ¿Los controles son compatibles con WPF?.
Si, como cualquier otro control de windowsForms, se puede utilizar en WPF mediante un elemento WindowsFormsHost, pero por cuestiones de diseño he decidido limitar los controles solo al diseñador de WindowsForms.
Si quieres usarlos en WPF primero debes eliminar todas las clases de atributo: <ToolboxItemFilter("System.Windows.Forms", ToolboxItemFilterType.Require)> en el código fuente. - ¿Vas a ir actualizando y añadiendo mejoras o correcciones en el código fuente?.
No de manera pública; este código fuente lo he compartido de forma excepcional simplemente por tener el gesto de hacerlo para intentar ayudar a aquellos que estén interesados en el desarrollo de controles de usuario,
pero no compartiré actualizaciones ni bug-fixes puesto que ElektroKit es un producto comercial y las actualizaciones se incluirán solo para los clientes. - ¿Por qué no has añadido otros controles como por ejemplo un DataGridView?.
Sencillamente por falta de tiempo. Cuando pueda añadiré más, pero como ya he dicho no lo compartiré aquí (ni en ningún otro sitio de forma gratuita). - ¿Puedo preguntarte cosas que no entienda del código fuente o del funcionamiento de los controles?.
Por supuesto, mi intención es ayudar en todo lo posible, pero utiliza el foro, no mensajes privados ni e-mails. - ¿Aceptas críticas y/o sugerencias?.
Por supuesto, ¡faltaría más!. Cualquier ayuda es bien recibida. - ¿Puedo compartir estos controles en otras páginas web?.
Sin problema, pero por favor, que se mencione al autor (es decir, a mi). - ¿Donde puedo conseguir el código fuente completo de ElektroKit?.
No puedes, es una librería comercial y el código fuente no está en venta. - ¿Donde puedo conseguir la librería comercial de ElektroKit?.
Pueden comprar ElektroKit en el mercado online de CodeCanyon.
Aquí tienen mi portafolio: https://codecanyon.net/user/elektro3/portfolio