2009-03-06 3 views
3

내가 UserControl을 (.NET 2.0 윈폼을)했습니다, 나는 이것을했습니다 :의 OnPaint 방법은 모든 자식 컨트롤에 대해 호출되고있는

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을에 테두리를 그릴 싶어하지만, 사각형은 모든 자식 컨트롤에서도 그려져 있습니다! 나는 모든 어린이 컨트롤에 대해 호출되어야한다는 것을 결코 읽지 못했지만 해결책이 있습니까?

답변

3

자식 컨트롤이 부모를 무효화하기 때문에 각 방법에 대해이 메서드가 실행됩니다.

매개 변수로 e를 사용하는 대신 (e가 이벤트를 발생시키는 자식이거나 아니지만) 컨트롤 이름을 명시 적으로 사용하십시오.

+0

'(PaintEventArgs UserControl) '또는'UserControl.Graphics'와 같이 전달 된 매개 변수로 사용 하시겠습니까? – TheLethalCoder

+0

이 답변은 잘못되었습니다. @ shog9 답변보기 – JustAnotherCoder

6

PaintEventArgs.ClipRectangle을 사용하여 사각형의 경계를 결정합니까? 대신 Control.ClientRectangle을 사용해보세요.

관련 문제