2013-11-01 1 views
0

패널 p2는 패널 1의 너비가 0이 될 때까지 표시되지 않습니다. 그러나 messageBox 코드의 주석을 제거하면 p2가 표시되어 messageBox가 나타납니다. 이것은 C#이 UI 페인트를 강제하는 다른 이벤트 (예 : messageBox)가 될 때까지 p2에서 repaint을 네이티브 지연한다고 생각하게합니다.슬라이딩 패널의 가시성이 작동하지 않음/지연 페인트 문제?

어떻게이 문제를 해결할 수 있습니까?

private void SlidePanel(UIPanel p, UIPanel p2) //, Direction d) 
    { 
     int prevWidth = p.Width; 
     PanelDockStyle prevDock = p.DockStyle; 
     p.DockStyle = PanelDockStyle.Left; 

     p2.Show(); 

     while (p.Width > 0) 
     { 
      p.Width -= (p.Width > 4 ? 4 : p.Width); 
      Thread.Sleep(1); 

      //if (p.Width < 400) 
      //{ 
      // MessageBox.Show("Ha"); 
      // break; 
      //} 
     } 

     p.Hide(); 
     p.DockStyle = prevDock; 
     p.Width = prevWidth; 
    } 

답변

0

p2.Refresh(). 아침 6시에 코드를 작성하면 이런 일이 발생합니다. : - |

+0

오후 2시에 UI 디스패처 루프를 이해하지 못하면 어떻게됩니까? –