Пользовательский элемент управления vb .NET, наследуемый от TextBox, не запускает событие Paint
Мне нужен многострочный TextBox, который всегда отключен, но он не должен закрашиваться серым цветом, но я хочу сохранить выбранный дизайнером цвет.
Ранее у меня было такое же требование с всегда черной меткой (без мультилинии), и поэтому я унаследовал от метки, как:
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
Это отлично работает. Теперь я хочу то же самое, но с многострочным ярлыком, поэтому я решил наследовать от 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
Теперь событие Paint никогда не запускается в пользовательском элементе управления CustomControl1 - TextBox.
Почему я не могу получить событие Paint?
Кроме того, если я хочу сделать свойство Enabled невидимым и не устанавливаемым пользователем, я делаю:
<Browsable(False),
DefaultValue(False)>
Public Overloads Property Enabled As Boolean
Get
Return False
End Get
Set(ByVal value As Boolean)
End Set
End Property
Но, таким образом, я не могу установить «реальное» свойство Enabled, я имею в виду поле поддержки.