在OnPaint()中的.Net DrawLine,行在面板中的控件后面

时间:2014-08-10 07:43:13

标签: c# vb.net

在图片(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

0 个答案:

没有答案