3

我有一个 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);
}

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

4

2 回答 2

7

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

于 2009-03-06T22:10:07.340 回答
4

因为子控件使父控件无效,导致每个控件都触发此方法。

不要使用 e 作为参数(e 将是触发事件的任何控件,无论是否为子控件),而是使用控件名称显式。

于 2009-03-06T22:16:29.993 回答