Winforms PaintEventArgs.ClipRectangle在UserControl上始终为(0,0,0,0)

Winforms PaintEventArgs.ClipRectangle在UserControl上始终为(0,0,0,0),winforms,user-controls,Winforms,User Controls,我正在尝试为我编写的UserControl编写EventHandler, 但出于某种原因,控件似乎没有纠结: Private Sub paints(sender As Object, p As PaintEventArgs) Handles Me.Paint ControlPaint.DrawBorder(p.Graphics, p.ClipRectangle, SystemColors.AppWorkspace, ButtonBorderStyle.Solid) End Sub 当我

我正在尝试为我编写的UserControl编写EventHandler, 但出于某种原因,控件似乎没有纠结:

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的轮廓如下:

用户控制
-表格布局
--表格布局
--标签
--标签
--文本框


它应该是250x50像素左右。

PaintEventArgs.ClipRectangle
是一个需要绘制的矩形。如果usercontrol上没有控件,则它是客户端区域如果有其他控件,则它会从客户端矩形中剪裁它们的区域!可能您的子控件占据了整个客户端区域,因此不需要绘制,因此在重写派生类上的
OnPaint()
方法时,会返回
(0,0,0,0)

调用
MyBase.OnPaint()
。如果订阅控件的
Paint()
事件,则不会调用
base
/
MyBase
。另外,请参阅