Vb.net 自定义控件闪烁

Vb.net 自定义控件闪烁,vb.net,controls,richtextbox,transparent,Vb.net,Controls,Richtextbox,Transparent,我已经成功地制作了一个自定义控件,它允许RichTextBox背景显示为透明,并且几乎可以完美地工作,但唯一的问题是,当RichTextBox刷新所有内容时,所有内容都会闪烁/闪烁。每次我输入一封信,我的所有表单都会刷新,文本和表单背景图像都会闪烁 除了使用 MyBase.Parent.Refresh() 这是我的代码: Class TransparentRichTextBox Inherits RichTextBox Public Sub New() MyBase.ScrollBar

我已经成功地制作了一个自定义控件,它允许RichTextBox背景显示为透明,并且几乎可以完美地工作,但唯一的问题是,当RichTextBox刷新所有内容时,所有内容都会闪烁/闪烁。每次我输入一封信,我的所有表单都会刷新,文本和表单背景图像都会闪烁

除了使用

MyBase.Parent.Refresh()
这是我的代码:

Class TransparentRichTextBox
Inherits RichTextBox
Public Sub New()
    MyBase.ScrollBars = RichTextBoxScrollBars.None
End Sub
Protected Overloads Overrides ReadOnly Property CreateParams() As CreateParams
    Get
        Dim cp As CreateParams = MyBase.CreateParams
        cp.ExStyle = cp.ExStyle Or &H20
        Return cp
    End Get
End Property
Protected Overloads Overrides Sub OnPaintBackground(ByVal e As PaintEventArgs)
End Sub
Protected Overrides Sub OnTextChanged(ByVal e As System.EventArgs)
    MyBase.OnTextChanged(e)
    MyBase.Parent.Refresh()
    End Sub
End Class

谢谢。

对不起,我通常会等一段时间看看是否有人回复。但回到手头的主要话题,这也有同样的问题。文本在您键入时不会更新,因此您还必须在那里调用刷新方法。您是对的。显然,使RichTextbox透明会产生一种奇怪的行为(光标一直被冻结)。我已经更新了我在回答你上一个问题()时的代码;这不是一个非常优雅的解决方案,但至少是可行的。关于将其置于背景为图像的控件上时的闪烁,它似乎是由容器控件引起的;您可能必须限制调用其绘制事件的时间。