El método OnPaint está siendo llamado para cada control infantil
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?
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