Pregunta

Tengo un UserControl (WinForms, .net 2.0), y tengo esto:

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);
}

Básicamente quiero dibujar un borde en UserControl, ¡pero el rectángulo se está dibujando en todos los controles secundarios también! Nunca leo que debería llamarse para cada control infantil, ¿hay alguna solución?

¿Fue útil?

Solución

Debido a que los controles secundarios invalidan al padre, esto provoca que este método se active para cada uno.

En lugar de usar e como el parámetro (e será el control que haya activado el evento, hijo o no), use la explícita del nombre del control.

Otros consejos

¿Por qué estás usando PaintEventArgs.ClipRectangle para determinar los límites del rectángulo? Intente usar Control.ClientRectangle en su lugar.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top