2013-05-05 3 views
5

나는 두 개의 텍스트 상자, 레이블 및 버튼을 포함하는 ShowDialog을 사용하여 불러올 양식을 가지고 있습니다. 내가 겪고있는 문제는 텍스트 상자가 양식 자체 앞에 그려지고 다른 컨트롤이 그려진다는 것입니다.컨트롤이 동시에 그려지지 않음

나는이 문제의 원인이 될 수 있는지 확실하지 해요 OnPaint 방법 오버라이드 (override) 오전 :

protected override void OnPaint(PaintEventArgs e) 
{ 
    ControlPaint.DrawBorder(e.Graphics, e.ClipRectangle, Color.Black, ButtonBorderStyle.Solid); 
    base.OnPaint(e); 
} 

그것은 단지 약간의 지연이의를하지만 볼 수 있고 짜증나. 고맙습니다.

양식은 길게 이중 버퍼링됩니다.

편집 : 양식에 FormBorderStyle이 없다는 사실을 정확히 지적했습니다. FormBorderStyleSizable으로 설정하면이 문제가 발생하지 않습니다. 그러나 내 경계 스타일로 FormBorderStyle.None을 가져야한다는 점에 유의하십시오. 아직 해결책을 찾지 못했습니다. 대화 상자 양식이 추가

+1

당신이 모든 관련 코드 레이블, 텍스트 상자 및 버튼의 도면에 관련된를 게시 할 수 있습니까? – JosephGarrone

+0

사실, 부모 요소는 렌더링하기 전에 각 자식 컨트롤의 render 메서드를 호출합니다. 이는 기본 동작입니다. 양식로드가 완료되면 대화 상자를 표시 할 수 있습니다. – Saravanan

+0

모든 컨트롤이 Visual Studio 디자이너를 통해 추가되었으므로이 컨트롤의 드로잉을 만지지 않았습니다. –

답변

1

시도 :

protected override CreateParams CreateParams 
    { 
     get 
     { 
      // Activate double buffering at the form level. All child controls will be double buffered as well. 

      CreateParams cp = base.CreateParams; 

      cp.ExStyle |= 0x02000000; // WS_EX_COMPOSITED 

      return cp; 
     } 
    } 
+0

감사합니다. –