2011-10-09 2 views
0

다른 컨트롤이있는 사용자 지정 컨트롤이 있습니다. 사용자가 클릭하면 재귀 적으로 모든 컨트롤을 거쳐 배경색이 파란색으로 바뀝니다. 그러나 컨트롤이 색을 개별적으로 변경하면 큰 깜박임 문제가 발생합니다. 이중 버퍼링을 사용하도록 설정했으나 내 그림이 최적화되어 있는지 의심 스럽습니다. 나는 이것이 이것이 그러한 효과를 내기위한 최선의 방법이 아닐지 모른다는 의혹을 가지고있다.배경을 변경할 때 사용자 지정 컨트롤이 깜박입니다.

이 깜박임을 제거하려면 어떻게해야합니까? 아니면 이것을하는 더 좋은 방법이 있습니까?

내 전화가 온 클릭 :

ControlUtils.SetColorRecursive(this, Color.LightSteelBlue); 

SetColorRecursive : 다시 착색되는

tCtl.SuspendLayout(); 

     if (tCtl != null) 
     { 
      // Set Color 
      tCtl.BackColor = tColor; 

      foreach (Control tSubCtl in tCtl.Controls) 
      { 
       // Ignore the following 
       if (tSubCtl is TextBox) continue; 
       if (tSubCtl is ListBox) continue; 
       if (tSubCtl is NumericUpDown) continue; 

       // Recursively change sub-controls 
       SetColorRecursive(tSubCtl, tColor); 
      } 
     } 

    tCtl.ResumeLayout(); 
+0

인터넷 검색은 합성이라는 다른 유형의 이중 버퍼링을 언급하는 결과를 산출했습니다. 누구든지이 방법에 대해 알고 있습니까? – MarkP

답변

0

Vista에서 문제가 해결 된 것으로 나타났습니다. WinXP 사용자는 SOL 일 수 있습니다.

protected override CreateParams CreateParams 
    { 
     get 
     { 
      // This eliminates child control flicker when selecting 
      CreateParams cp = base.CreateParams; 
      cp.ExStyle |= 0x02000000; 
      return cp; 
     } 
    } 
+0

XP는 스타일을 지원하는 Windows의 첫 번째 버전입니다. –

0

당신이 이중 버퍼링이 모든 컨트롤의 배경에 사용할 수 있습니까? (- 양식 만 해당)

+0

사실, 나는 그렇게합니다. 해결책을 찾았습니다. – MarkP

관련 문제