Pergunta

Eu tenho um UserControl (WinForms, .net 2.0), e eu tenho o seguinte:

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

Basicamente, eu quero desenhar uma borda no UserControl, mas o retângulo está sendo empate em todos os controles da criança também! Eu nunca li ele deve ser chamado para cada controle filho, há uma solução?

Foi útil?

Solução

Uma vez que os controles filho invalida o pai, fazendo com que este método seja disparado para cada um.

Em vez de usar e como o parâmetro (e vai ser qualquer controle disparou o evento, criança ou não) usar o nome do controle explicitamente.

Outras dicas

Por que você está usando PaintEventArgs.ClipRectangle para determinar os limites do retângulo? Tente usar Control.ClientRectangle .

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top