Yo se que muchos de los programadores que empiezan tienen dudas al igual que yo y todos vamos aprendiendo y adquirimos experiencia con el paso del tiempo. No me gusta ser egoista ni nada asi que quiero compartir la solucion con ustedes solo faltaba anexar lo siguiente:
Private Sub txtTextbox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTextbox.KeyDown
MyBase.OnKeyDown(e)
End Sub
Private Sub txtTextbox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTextbox.KeyPress
MyBase.OnKeyPress(e)
End Sub
Private Sub txtTextbox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTextbox.KeyUp
MyBase.OnKeyUp(e)
End Sub
explico.... como estoy heredando directamente de UserControl y ocupo un textbox en mi control los eventos y/ó acciones se ejecutaban ahi de modo que teniamos que pasar los eventos y/o acciones a la clase base en este caso UserControl.
El codigo del control quedó así
Imports System
Imports System.ComponentModel
Imports System.Drawing
Imports System.Windows.Forms
Namespace MiDSINCTextbox
Public Class clsDSINCTextbox
Inherits UserControl
#Region "Variables"
Dim colBorde As Color = Color.SteelBlue
Private Components As IContainer
Private intBorderSize As Integer = 1
Private intLeftpad As Integer = 2
Private intToppad As Integer = 2
Private WithEvents picBoth As New PictureBox()
Private WithEvents picLeft As New PictureBox()
Private WithEvents picRight As New PictureBox()
Private WithEvents picTop As New PictureBox()
Private WithEvents txtTextbox As New TextBox()
#End Region
#Region "Constructor"
Public Sub New()
MyBase.New()
IniciaComponentes()
colBorde = Color.DeepSkyBlue
End Sub
#End Region
#Region "Funciones"
Private Sub IniciaComponentes()
Me.SuspendLayout()
'Establecemos los parametros del textbox del control
With Me.txtTextbox
'Indicamos el tipo de borde
.BorderStyle = Windows.Forms.BorderStyle.None
'El tipo de fuente y estilo
.Font = New Font("Tahoma", 8.25!, FontStyle.Regular, GraphicsUnit.Point, CType(0, Byte))
'Establecemos una ubicacion
.Location = New Point(8, 5)
'La longitud máxima
.MaxLength = 0
'El nombre
.Name = "TextBox1"
'Un tamaño
.Size = New Size(176, 14)
'Texto por default
.Text = "TextBox"
End With
'Establecemos los parametros de la linea que dibuaremos del lado izquierdo
With Me.picLeft
'Color de fondo
.BackColor = colBorde ' Color.DeepSkyBlue
.Dock = DockStyle.Left
'establecemos una ubicacion
.Location = New Point(0, 1)
'el nombre
.Name = "picLeft"
'un tamaño
.Size = New Size(1, 22)
.TabStop = False
End With
'Establecemos los parametros de la linea que dibuaremos del lado izquierdo
With Me.picRight
'Establecemos el color de fondo
.BackColor = colBorde 'Color.DeepSkyBlue
.Dock = DockStyle.Right
'una ubicacion
.Location = New Point(191, 1)
'el nombre
.Name = "picRight"
'un tamaño
.Size = New Size(1, 22)
.TabStop = False
End With
'Establecemos los parametros de la linea que dibuaremos en la parte superior
With Me.picTop
'establecemos el color de fondo
.BackColor = colBorde 'Color.DodgerBlue
.Dock = DockStyle.Top
'el nombre
.Name = "picTop"
'un tamaño
.Size = New Size(192, 1)
.TabStop = False
End With
'Establecemos los parametros de la linea que dibuaremos en la parte inferior
With Me.picBoth
'establecemos el color de fondo
.BackColor = colBorde 'Color.DodgerBlue
.Dock = DockStyle.Bottom
'una ubicacion
.Location = New Point(0, 23)
'un nombre
.Name = "picBoth"
'un tamaño
.Size = New Size(192, 1)
.TabStop = False
End With
With Me
'establecemos el color de fondo
.BackColor = Color.White
.Controls.AddRange(New Control() {Me.txtTextbox, Me.picRight, Me.picLeft, Me.picBoth, Me.picTop})
'el nombre del control
.Name = "TextBox"
'un tamaño
.Size = New Size(192, 24)
.ResumeLayout(False)
End With
End Sub
#End Region
#Region "Métodos"
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (Components Is Nothing) Then Components.Dispose()
End If
MyBase.Dispose(disposing)
End Sub
Private Sub TextBox_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
picTop.Width = Me.Width
picLeft.Height = Me.Height
picRight.Height = Me.Height
picBoth.Width = Me.Width
txtTextbox.Location = New Point(intLeftpad, intToppad)
txtTextbox.Width = Me.Width - (intBorderSize * 2) - intLeftpad
txtTextbox.Height = Me.Height - (intBorderSize * 2) - intToppad
End Sub
Private Sub txtTextbox_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTextbox.KeyDown
MyBase.OnKeyDown(e)
End Sub
Private Sub txtTextbox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtTextbox.KeyPress
MyBase.OnKeyPress(e)
End Sub
Private Sub txtTextbox_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtTextbox.KeyUp
MyBase.OnKeyUp(e)
End Sub
#End Region
#Region "Propiedades"
<Category("CustomProperties"), Description("Establece el color de fondo del control")>
Public Property BackGroudColor() As Color
Get
Return Me.BackColor
End Get
Set(ByVal value As Color)
Me.BackColor = value
txtTextbox.BackColor = value
End Set
End Property
<Category("CustomProperties"), Description("Establece el color de borde del control")>
Public Property BorderColor() As Color
Get
Return colBorde
End Get
Set(ByVal value As Color)
colBorde = value
picBoth.BackColor = value
picLeft.BackColor = value
picRight.BackColor = value
picTop.BackColor = value
End Set
End Property
<Category("CustomProperties"), Description("Establece el tamaño del borde del control")>
Public Property BorderSize() As Integer
Get
Return intBorderSize
End Get
Set(ByVal value As Integer)
intBorderSize = value
Me.Refresh()
End Set
End Property
'JE Propiedad bastante logica no XD
Public NotOverridable Overrides Property Font() As Font
Get
Return txtTextbox.Font
End Get
Set(ByVal Value As Font)
txtTextbox.Font = Value
Me.Refresh()
End Set
End Property
<Category("CustomProperties"), Description("Establece el color de la fuente del control")>
Public Overrides Property ForeColor() As Color
Get
Return txtTextbox.ForeColor
End Get
Set(ByVal value As Color)
txtTextbox.ForeColor = value
End Set
End Property
<Category("CustomProperties"), Description("Indica si el control sera multilinea")>
Public Property Multiline() As Boolean
Get
Return txtTextbox.Multiline
End Get
Set(ByVal value As Boolean)
txtTextbox.Multiline = value
Me.Refresh()
End Set
End Property
Public Property PaddingLeft() As Integer
Get
Return intLeftpad
End Get
Set(ByVal Value As Integer)
intLeftpad = Value
Me.Refresh()
End Set
End Property
Public Property PaddingTop() As Integer
Get
Return intToppad
End Get
Set(ByVal Value As Integer)
intToppad = Value
End Set
End Property
<Category("CustomProperties"), Description("Establece el caracter a utilizar para encriptar un password")>
Public Property PasswordChar() As String
Get
Return txtTextbox.PasswordChar
End Get
Set(ByVal value As String)
txtTextbox.PasswordChar = value
Me.Refresh()
End Set
End Property
<Category("CustomProperties"), Description("Indica si el control tendra scrolls y que tipo sera")>
Public Property ScrollBars() As ScrollBars
Get
Return txtTextbox.ScrollBars
End Get
Set(ByVal value As ScrollBars)
txtTextbox.ScrollBars = value
End Set
End Property
<Category("CustomProperties"), Description("Establece la alineacion del texto del control")>
Public Property TextAlign() As HorizontalAlignment
Get
Return txtTextbox.TextAlign
End Get
Set(ByVal value As HorizontalAlignment)
txtTextbox.TextAlign = value
Me.Refresh()
End Set
End Property
<Category("CustomProperties"), Description("Establece el texto que sera mostrado en el control")>
Public Property TextControl As String
Get
Return txtTextbox.Text
End Get
Set(ByVal Value As String)
txtTextbox.Text = Value
End Set
End Property
Public Property WordWrap() As Boolean
Get
Return txtTextbox.WordWrap
End Get
Set(ByVal value As Boolean)
txtTextbox.WordWrap = value
Me.Refresh()
End Set
End Property
#End Region
End Class
End Namespace
El código esta programado en VS .Net 2010 y si quieren algo más pueden anexarlo sin problema alguno solo agradecería no me roben el crédito
saludos y suerte.