2013-11-01 21 views
0

面板p2直到面板1的寬度爲0才顯示。但是,如果我取消註釋messageBox代碼,則p2會在出現messageBox時呈現。這導致我認爲C#本身會延遲對p2的重繪,直到某些強制UI繪畫的其他事件(例如messageBox)。滑動面板不可見/延遲塗料問題?

我該如何解決這個問題?

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:00寫代碼時會發生這種情況。 : - |

+0

就是這樣,當你在下午2:00不瞭解UI調度器循環時會發生什麼:) –