Cambiar el color de fondo en un TextBox deshabilitado, implementado en una clase

En el anterior post “Cambiar el color de fondo en un TextBox Deshabilitado” mostramos una manera de hacer que actué un TextBox como si estuviese deshabilitado es decir que no nos deje editarlo pero sin tener el inconveniente del color de fondo que como todos sabemos hay algunos usuarios que ponen el grito al cielo cuando ven el color de fondo del TextBox deshabilitada, pero esto realmente no nos ayuda mucho a menos que lo tengamos implementado en una clase.

En este post lo implementaremos en una clase para ello agregamos un componente a nuestro proyecto (lo ideal sería crear una Dll para utilizarlo en diferentes proyectos), les muestro una imagen de como agregar un componente, le ponemos el nombre de MiTextBox le damos doble click en el archivo MiTextBox.vb y de ahí click en “haga click aquí para cambiar a la vista Código” y procedemos a copiar el siguiente código:

#Region "Clase MiTextBox"

Public Class MiTextBox

Inherits TextBox ' Heredamos de la clase TextBox

#Region "Configuración del TextBox"

Private pInhabilitar As Boolean = False ' Esta propiedad nos indicara si el MiTextBox actuara de forma habilitado o no

#End Region

#Region "Propiedades"

‘ Ok ya no es necesario esta implementación en la última versión del Visual Studio pero más abajo

‘ veran porque lo hago de esta manera

Public Property Inhabilitar As Boolean

Get

Return pInhabilitar

End Get

Set(ByVal value As Boolean)

pInhabilitar = value

' Esta línea colocara a nuestro MiTextBox con el BackColor igual al del formulario

' si desean colocarle un color especifico solo comenten está línea y cambien directamente

' el BackColor del MiTextBox en el formulario

If Not DesignMode Then If pInhabilitar Then Me.BackColor = Form.ActiveForm.BackColor

End Set

End Property

#End Region

' Este es el procedimiento que implementamos en el post anterior "Cambiar el color de fondo en un TextBox Deshabilitado"

' Lo que estamos haciendo es sobreescribir el metodo OnEnter del control para que salte inmediantamente y de esta manera

' actue como si estuviese deshabilitado

Protected Overrides Sub OnEnter(ByVal e As System.EventArgs)

If pInhabilitar Then SendKeys.Send(Chr(Keys.Tab)) ' Si ponemos true en la propiedad Inhabilitar realizara un tab

MyBase.OnEnter(e) ' Le indicamos que continue con el metodo OnEnter del control, si no ponemos esto lo estaremos truncando

' y esa no es la idea debe proceder de forma normal si indicamos la propiedad Inhabilitar como false

End Sub

End Class

#End Region

Al momento de digitar el código les debe aparecer un error en la línea “Inherits TextBox” les muestro una imagen de cómo solucionarlo debemos seleccionar la primera opción “System.Windows.Form.TextBox

Ahora para poder utilizar nuestra clase “MiTextBox” lo agregamos como si fuera un elemento de nuestra barra “Cuadro de herramientas” y como una imagen dice más que mil palabras ahí les va.

Para determinar si nuestro control “MiTextBox” va actuar como si estuviese deshabilitado (Enabled=false) solo tenemos que indicarlo poniendo a su propiedad “Inhabilitar” el valor true si queremos que actué de manera habilitado (Enabled=true) le ponemos valor false, si ok parece que esta alrevez pero es solo cuestión de gustos si quieren lo cambian claro empiecen desde el nombre de la propiedad “Inhabilitar” a “Habilitar”.

Tags: ,

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

© VB-MUNDO – Visual Basic y mucho más
CyberChimps