2011-02-15 5 views
0

mainform 및 여러 사용자 지정 사용자 정의 컨트롤이있는 C# 응용 프로그램이 있습니다.C# 사용자 정의 컨트롤 다시 그리기

메인 폼을 움직이면 사용자 컨트롤이 다시 칠하기를 계속하고 메인 폼 이동을 멈 추면 다시 칠합니다.

이 다시 그리기를 사용하지 않으려면 어떻게해야합니까?

+0

화면이 깜박입니까? 그 깜박임을 멈추고 싶습니까? – Nighil

답변

0

깜박 거리는 thats 당신을 성가신 경우 시도 할 수 및 컨트롤의 DoubleBuffered 속성을 true로 설정하십시오. 당신이 형태의 이벤트를 이동하고이 질문에 설명 뭐죠 유사한 방식으로 자식 컨트롤에 그림을 끌 가입 수에 비해 다른

...

Have a look here

+0

음 ... 문제는 메인 폼이 움직일 때 컨트롤을 페인트 칠하지 않을 때 컨트롤이 전혀 페인트되지 않는다는 것입니다. 내가 원하는 것 : 자식 컨트롤 # 1을 다시 그리기 만하고, 메인 폼이 움직일 때 나머지는 그대로 두십시오 (다시 칠하지 않음). – jfronner

0

당신은 강제 할 필요가 없습니다 자신을 무효화()하십시오. 컨트롤에서 사용자 정의 페인팅을하고 있다고 가정합니까? InitializeComponent() 후에 생성자 내에서; 당신이 가지고 있습니까

SetStyle(ControlStyles.UserPaint, true); 
    SetStyle(ControlStyles.AllPaintingInWmPaint, true); 

?

2

this previous question에 대한 대답은 WM_SETREDRAW Win32 API를 사용하여 드로잉을 일시 중지하고 다시 시작할 수있는 방법을 설명합니다. 멋진 래퍼 클래스가 포함되어 있습니다. 어쩌면 그것은 당신을 도울 것입니다.