PaintEventArgs.ClipRectangle在UserControl

时间:2018-09-04 11:08:38

标签: winforms user-controls

我正在尝试为我编写的UserControl编写一个EventHandler, 但由于某种原因,控件似乎没有ClipRectangle:

Private Sub paints(sender As Object, p As PaintEventArgs) Handles Me.Paint
    ControlPaint.DrawBorder(p.Graphics, p.ClipRectangle, SystemColors.AppWorkspace, ButtonBorderStyle.Solid)
End Sub

当我尝试添加MyBase.OnPaint(p)时,我得到一个StackOverflow,因为出于某种原因,这似乎触发了无穷的递归。

那为什么没有矩形呢? UserControl的轮廓如下所示:

UserControl
-TableLayout
--TableLayout
---标签
---标签
--文字框

应该是250x50像素。

1 个答案:

答案 0 :(得分:0)

PaintEventArgs.ClipRectangle需要要绘制的矩形。如果您的用户控件上没有控件,则为客户区。 但是,如果还有其他控件,则它会从客户端矩形截取!可能您的子控件占据了整个客户区域,因此无需绘制,因此返回了(0, 0, 0, 0)