El control personalizado vb .NET que hereda de TextBox no activa el evento Paint
Necesito un TextBox multilínea que siempre está deshabilitado, pero no debería pintarse solo en gris, pero quiero mantener el color elegido por su diseñador.
Anteriormente tenía el mismo requisito con una etiqueta siempre negra (sin multilínea) y heredé de Label como:
Imports System.ComponentModel
Public Class LabelDisabled
Inherits Label
Sub New()
InitializeComponent()
Enabled = False
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
' always draw it black
e.Graphics.DrawString(Me.Text, Me.Font, Brushes.Black, 0, 0)
End Sub
End Class
Eso funciona bien Ahora quiero lo mismo pero con una etiqueta multilínea, así que elegí heredar de TextBox:
Imports System.ComponentModel
Public Class CustomControl1
Inherits TextBox
Sub New()
InitializeComponent()
'Paint never fires anyway
'Enabled = False
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim brush As New SolidBrush(Me.ForeColor)
e.Graphics.DrawString(Me.Text, Me.Font, brush, 0, 0)
End Sub
End Class
Ahora el evento Paint nunca se activa en el CustomControl1 - TextBox heredado - control.
¿Por qué no puedo obtener el evento Paint?
Además, si quiero hacer que la propiedad Enabled sea invisible y no configurable por el usuario, lo hago:
<Browsable(False),
DefaultValue(False)>
Public Overloads Property Enabled As Boolean
Get
Return False
End Get
Set(ByVal value As Boolean)
End Set
End Property
Pero de esta manera, tampoco puedo establecer la propiedad habilitada "real", me refiero al campo de respaldo.