在图片(Picture Click Me)中,
蓝色矩形是backcolor = Transparent的控件(用户控件由System.Windows.Form.Control继承)
我在“透明控制”
“透明控制的Z顺序是顶级”
在图片中,左:文本框和透明控件没有问题。
在图片中,右:面板(灰色),文本框在面板控件中,而TransparentControl就在它上面,但蓝线的一部分将显示在文本框后面。
问题是: 文本框背后是“透明控件”,但为什么蓝线会被Textbox剪切。 而这种情况只有在Panel中的Textbox时才会出现。
如何修复此错误。
透明控制的代码在
之下Public Class TransparentPanel
Inherits System.Windows.Forms.Control
' To Set Transparent backcolor, Overrides CreateParams And OnPaintBackground.
Protected Overrides ReadOnly Property CreateParams As System.Windows.Forms.CreateParams
Get
Dim cp As Windows.Forms.CreateParams = MyBase.CreateParams
cp.ExStyle &= &H20
Return cp
End Get
End Property
Protected Overrides Sub OnPaintBackground(ByVal e As System.Windows.Forms.PaintEventArgs)
'MyBase.OnPaintBackground(e)
End Sub
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
MyBase.OnPaint(e)
' Draw blue line and Rectabgle
e.Graphics.DrawLine(New Pen(Brushes.Blue, 2), 0, 0, Me.Width, Me.Height)
e.Graphics.DrawRectangle(New Pen(Brushes.Blue, 2), 2, 2, Me.Width - 4, Me.Height - 4)
End Sub
End Class