我正在重写paint事件,因为我需要给一个文本框一个额外的属性。在这种情况下,额外属性是文本框的边框颜色。当包含文本框的用户控件出现时,它不会触发OnPaint
事件。我不知道为什么会这样。
我的代码如下
CustomTaskBox类
Public Class CustomTextBox
Inherits TextBox
<Browsable(True)>
<Category("Extended Properties")>
<Description("Set TextBox border Color")>
Public Sub New()
Multiline = False
BorderStyle = BorderStyle.None
End Sub
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
Dim buttonPen = New Pen(Color.Firebrick, 3)
Dim buttonRect = New Rectangle(0, 0, Size.Width - 1, Size.Height - 1)
e.Graphics.DrawRectangle(buttonPen, buttonRect)
End Sub
End Class
主类
Dim _NewTextBox As New CustomTextBox
_NewTextBox.Name = textBoxName
_NewTextBox.Multiline = multiline
_NewTextBox.Text = textBoxText
_NewTextBox.Top = topForNextControl
_NewTextBox.Left = 17
_NewTextBox.Width = textBoxWidth * widthScaleFactor
_MainContent.Controls.Add(_NewTextBox)
答案 0 :(得分:0)
如果我没记错的话 - 您需要使用Invalidate();
来通知需要重新绘制控件。