Custom TextBox

26/07/2006 - 22:29 por Jarsinio | Informe spam
Ya he visto varios ejemplos de custom Textbox pero mi problema radica
en el uso del mismo. En varios lados vi que te genera un DLL y ese
seria tu control, pero no logre hacerlo.

Pro favor un poco de orientación

Saludos
(se que la pregunta es basica pero por algun lado hay que empezar)
 

Leer las respuestas

#1 Luis Miguel Blanco
31/07/2006 - 07:49 | Informe spam
Hola Jarsinio

Para crear un control personalizado basado en el TextBox nativo de la
plataforma .NET, debes crear en primer lugar un proyecto basado en la
plantilla Biblioteca de controles, el cual te añadirá una plantilla de diseño
del control, sobre la que, al igual que se hace con el diseñador de
formularios, añadiremos un control TextBox al que modificaremos el
comportamiento.

Supongamos que necesitamos crear un TextBox que cuando tenga una cantidad
superior a 5 caracteres, le cambiemos el color de fondo, para ello, debemos
añadir una propiedad para permitir al usuario del control asignar dicho color
de fondo, y codificar el evento TextChanged del control, para detectar que
cuando se la cantidad de caracteres sea superior o inferior a 5, establecer
el color adecuado de fondo. El código de la clase de tu control sería similar
al siguiente:

'///////////////////////////////////
Public Class TextColor
Inherits System.Windows.Forms.UserControl

Private moColorRango As Color

#Region " Código generado por el Diseñador de Windows Forms "

Public Sub New()
MyBase.New()

'El Diseñador de Windows Forms requiere esta llamada.
InitializeComponent()

'Agregar cualquier inicialización después de la llamada a
InitializeComponent()

End Sub

'UserControl1 reemplaza a Dispose para limpiar la lista de componentes.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub

'Requerido por el Diseñador de Windows Forms
Private components As System.ComponentModel.IContainer

'NOTA: el Diseñador de Windows Forms requiere el siguiente procedimiento
'Puede modificarse utilizando el Diseñador de Windows Forms.
'No lo modifique con el editor de código.
Friend WithEvents txtNumColor As System.Windows.Forms.TextBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub
InitializeComponent()
Me.txtNumColor = New System.Windows.Forms.TextBox
Me.SuspendLayout()
'
'txtNumColor
'
Me.txtNumColor.Location = New System.Drawing.Point(8, 8)
Me.txtNumColor.Name = "txtNumColor"
Me.txtNumColor.TabIndex = 0
Me.txtNumColor.Text = ""
'
'TextColor
'
Me.Controls.Add(Me.txtNumColor)
Me.Name = "TextColor"
Me.Size = New System.Drawing.Size(120, 40)
Me.ResumeLayout(False)

End Sub

#End Region


Public Property ColorRango() As Color
Get
Return moColorRango
End Get
Set(ByVal Value As Color)
moColorRango = Value
End Set
End Property

Private Sub txtNumColor_TextChanged(ByVal sender As Object, ByVal e As
System.EventArgs) Handles txtNumColor.TextChanged
If Me.txtNumColor.Text.Length > 5 Then
Me.txtNumColor.BackColor = moColorRango
Else
Me.txtNumColor.BackColor = Color.White
End If
End Sub
End Class
'///////////////////////////////////

Si quieres que tu control muestre al ser añadido al cuadro de herramientas
de visual studio, un icono característico, elige un archivo de imagen gif,
jpg, etc., y lo añades a tu proyecto, teniendo en cuenta que en la propiedad
"acción de generación" debes seleccionar el valor "recurso incrustado". La
otra operación que debes hacer para incluir la imagen como icono, es añadir
el siguiente atributo en la cabecera de la clase de tu control personalizado:

'///////////////////////////////////
<ToolboxBitmap(GetType(TextColor), "ImgCara.gif")> _
Public Class TextColor
Inherits System.Windows.Forms.UserControl
'
'
End Class
'///////////////////////////////////

El primer parámetro del atributo ToolboxBitmap es el tipo correspondiente al
nombre de tu control, y el segundo parámetro el nombre del archivo.

Una vez terminado el código del control, compila el proyecto, y para usarlo
en un proyecto Windows Forms estándar, en la ventana del explorador de
soluciones, haz clic derecho en el nodo References, y elige "agregar
referencia", selecciona el archivo dll correspondiente al proyecto de tu
control, y como siguiente paso, haz clic derecho en el cuadro de herramientas
y elige "agregar o quitar elementos". En la ventana "personalizar cuadro de
herramientas" que te aparece, en la pestaña "componentes .net framework",
pulsa "examinar" y busca el archivo dll del proyecto correspondiente al
control, una vez que lo selecciones, la imagen asociada al icono te aparecerá
en el cuadro de herramientas, y ya podrás arrastrarla al diseñador del
formulario igual que cualquier otro control, pudiendo también manipular la
nueva propiedad ColorRango al igual que otra propiedad estándar.

Espero que estas indicaciones te sirvan de ayuda, si necesitas documentación
más completa, puedes consultar la siguiente dirección:

http://www.algoritmodigital.com

Que corresponde a una revista gratuita, en la que una vez que te hayas
registrado, busca utilizando la opción de búsquedas avanzadas, el artículo
"Desarrollo de controles propios", en el que podrás ver los pasos a seguir
para crear un control de este tipo.

Un saludo
Luis Miguel Blanco
http://www.dotnetmania.com


"Jarsinio" wrote:

Ya he visto varios ejemplos de custom Textbox pero mi problema radica
en el uso del mismo. En varios lados vi que te genera un DLL y ese
seria tu control, pero no logre hacerlo.

Pro favor un poco de orientación

Saludos
(se que la pregunta es basica pero por algun lado hay que empezar)


Preguntas similares