正在为每个子控件调用OnPaint方法

Die*_*cic 3 c# drawing onpaint winforms

我有一个UserControl(WinForms,.net 2.0),我就是这样的:

protected override void OnPaint(PaintEventArgs e)
{
    base.OnPaint(e);

    var rect = e.ClipRectangle;
    var pen = new Pen(Brushes.LightGray, 1);

    e.Graphics.DrawRectangle(pen, rect);
}
Run Code Online (Sandbox Code Playgroud)

我基本上想在UserControl上绘制一个边框,但矩形也在所有子控件中绘制!我从来没有读过应该为每个儿童控制器调用它,是否有解决方案?

Sho*_*og9 6

你为什么用它PaintEventArgs.ClipRectangle来确定矩形的边界?请尝试使用Control.ClientRectangle.