Añadir funcionalidad a un control TextBox
Fecha: 10/Nov/2004 (29/Oct/2004)
|
Hola, me decidí a escribir este artículo por la necesidad de un desarrollador que hizo el siguiente requerimiento en PanoramaBox: “Hola a todos tengo una consulta necesito hacer que un textbox al ser presionada la tecla flecha arriba envíe el foco hacia el control anterior y al presionar flecha hacia abajo envíe el foco al control siguiente, esto a través de un control personalizado para transformarlo en una Dll que me permita utilizar este control en todo el programa sin tener que digitar nuevamente estas líneas.
En realidad la funcionalidad que quiere agregar a su control TextBox en código no sería bastante, pero lo importante es reutilizar el mismo código sin volverlo a escribir.
Resumen: Entonces en este artículo vamos a ver cómo desarrollar un control personalizado en este caso un TextBox con la capacidad añadida de pasar el foco al siguiente control o al anterior según presione las teclas arriba o abajo. Además veremos cómo añadirlo a nuestra caja de herramientas para poderlo utilizar en cualquier formulario u otra aplicación. Esto va estar interesante porque será muy útil para personalizar y crear nuestros propios controles según los requerimientos que tengamos.
Veamos paso a paso como crearlo:
1) Abrir Visual Studio .NET y crear un Nuevo Proyecto, elegir una Biblioteca de Controles de Windows, colocarle un nombre por ejemplo MiTextBox, y hacer clic en Aceptar.
2) Modificar la propiedad Name del control a: MiTextBox.
3) Ir al código del Control y hacer que herede específicamente de TextBox y no de UserControl.
Inherits System.Windows.Forms.TextBox
4) Ahora elegir del menú desplegable que se encuentra arriba en la parte izquierda (MiTextBox Events) y del menú desplegable de la derecha elegimos el evento KeyDown. Y escribimos el siguiente código:
Private Sub MiTextBox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If e.KeyCode = Keys.Up Then
Me.FindForm.SelectNextControl(sender, False, False, True, True)
ElseIf e.KeyCode = Keys.Down Then
Me.FindForm.SelectNextControl(sender, True, False, True, True)
End If
End Sub
Aquí son dos métodos los responsables de realizar lo que deseamos: FindForm encuentra el formulario donde está el control para hacer referencia al método SelectNextControl, que toma también como referencia al control en este caso MiTextBox para ir adelante o hacia atrás según la tecla que presionamos.
5) Bueno ahora guardamos el proyecto y vamos al Menú Generar y elegimos Generar Solución, con esto vamos a crear el control generando el archivo de biblioteca dll.
CÓMO UTILIZAR EL CONTROL
1) Ahora cerramos el proyecto de Biblioteca de Controles de Windows en el menú Archivo/Cerrar Solución, y creamos otro proyecto nuevo de Aplicación para Windows, elegimos un nombre y hacemos clic en aceptar.
2) Bien, ahora vamos a la caja de herramientas y hacemos clic en botón secundario en cualquier zona donde están los otros controles y elegimos Agregar o quitar elementos… Se abre una ventana y hacemos clic en examinar y buscamos la carpeta Bin del proyecto anterior de Biblioteca de Controles de Windows, y abrimos el archivo MiTextBox.dll, y por último hacemos clic en Aceptar en la ventana Personalizar cuadro de herramientas. El control se añade al final como se ve en la siguiente figura.
3) Para probar su funcionamiento, primero arrastremos un control TextBox normal al formulario, ahora colocamos el control que acabamos de añadir a la caja de herramientas que se ubica al final y por último añadimos otro TextBox normal, entonces tendremos algo similar a la siguiente figura.
4) Ejecutamos la aplicación y nos ubicamos en nuestro control MiTextBox1 y veremos que al presionar las flechas arriba o abajo el control va al siguiente o al anterior control que se encuentre en el formulario.
Resumen: Se puede apreciar a través de este ejemplo la facilidad para crear controles personalizados, en este caso particular la funcionalidad añadida al control TextBox es sencilla pero sirve de ejemplo muy valioso para otras implementaciones según los requerimientos que necesitemos.
Autor: Ing. Germán David Santa Cruz – DCE 2