OnPaint事件未触发

时间:2018-01-11 14:50:28

标签: vb.net winforms

我正在重写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)

1 个答案:

答案 0 :(得分:0)

如果我没记错的话 - 您需要使用Invalidate();来通知需要重新绘制控件。