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

问题描述 投票:0回答:1

我正在尝试为我编写的UserControl编写一个事件处理程序,但由于某种原因,Control似乎没有剪辑矩形:

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,因为出于某种原因,这似乎触发了一些无休止的递归。

那么为什么没有Rectangle? UserControl的大纲是这样的: 用户控件 - TableLayout - - TableLayout - - - 标签 - - - 标签 - - 文本框

它应该像250x50像素。

winforms user-controls
1个回答
0
投票

PaintEventArgs.ClipRectangle是一个需要绘制的矩形。如果您的usercontrol没有控件,则它是客户端区域。但如果有其他控件,那么它会从客户端矩形中剪切它们的区域!可能你的孩子控件占据了整个客户区域,因此不需要绘制因此返回(0, 0, 0, 0)

© www.soinside.com 2019 - 2024. All rights reserved.