2011-04-18 3 views
0

Control을 허용하는 클래스가 있으며 생성 된 이미지가 그려집니다. 내 응용 프로그램 코드에서 나는 이것을 위해 Panel 컨트롤을 사용하고 있습니다 - 이미지가 다시 그려지면서 컨트롤에서 많은 깜박 거림을 제외하고는 잘 작동하는 것 같습니다. 솔루션은 컨트롤에서 이중 버퍼링을 사용하는 것입니다. 나는 다음과 같은 코드로이 일을 해요 :더블 버퍼링 컨트롤을 사용하면 회색이 표시됩니다.

System.Reflection.PropertyInfo aProp = 
       typeof(System.Windows.Forms.Control).GetProperty(
        "DoubleBuffered", 
        System.Reflection.BindingFlags.NonPublic | 
        System.Reflection.BindingFlags.Instance); 

      aProp.SetValue(drawControl, true, null); 

이 코드를 추가 한 후, 이미지가 그려, 다음 immeadiately 기본 회색 버튼 배경 색상으로 대체됩니다 - 시스템 내 자신 만의 콘텐츠를 통해 그리는 것처럼 그것의 .

나는 콘트롤을 그리지 않는 시스템을 알려주는 속성을 본 기억이있다. 콘텐트를 전체 콘트롤로 채우고 있기 때문에 완벽 할 것이다. 그러나 지금은 찾을 수 없다. 그런 부동산이 있습니까? 그렇다면 어떻게 할 수 있습니까?

.NET Framework 버전 4.0에서 C#을 사용하고 있습니다.

답변

1

컨트롤의 FlatStyle을 현재 FlatStyle.System으로 설정 한 경우 FlatStyle.Standard로 설정해보십시오.

이 (반사에 의해 DoubleBuffered 설정하면 너무 끔찍한 보이지만, 아마 당신은 어떤 이유로 그렇게 할 필요)

+0

감사합니다! 나는 그것이 왜 효과가 있었는지 전혀 알지 못한다. 건배! – Thomi

+0

'System'으로 설정하면 컨트롤 페인팅 전체가 OS로 전달되어 Winforms가 그렇게 복잡하지 않습니다. FlatStyle.System에서는 배경색과 같은 디자이너 속성이 작동하지 않습니다. –

관련 문제