2014-04-09 41 views
0

我使用窗口的應用程序和C#..我有一個圖象是在該應用..開始無形被點擊一些按鈕時,畫面框必須被顯示。 。加載GIF圖像可見的,而在執行進程運行

我用這個編碼,但圖片框是不可見的

private void btnsearch_Click(object sender, EventArgs e) 
     { 
      if (cmbproject.Text == "---Select---") 
      { 
       MessageBox.Show("Please Select Project Name"); 
       return;    
      } 
      else 
      { 
       pictureBox1.Visible = true; 
       pictureBox1.BringToFront(); 
       pictureBox1.Show(); 

       FillReport(); 
       Thread.Sleep(5000); 
       pictureBox1.Visible = false; 
     } 

    } 
+0

這個代碼不工作,gif圖片亙古不變的獲得顯示在所有....請幫我找到答案 – user3471683

+0

你永遠需要'BringToFront'或'Show'上的控件。確保控制器在設計器中可見(並且沒有任何東西在其上)。那麼這應該工作。 – PMF

+0

在後面有一個gridview這就是我把前面的picturebox的原因我嘗試了所有的可能性,但圖像沒有顯示出來..而在執行 – user3471683

回答

2

不要使用Sleep - 阻止線程,這意味着沒有窗戶的消息得到處理,你的表格將不會重新繪製。

相反,你可以使用一個Timer 5秒後隱藏圖像。

計時器添加到您的表單,並改變你的代碼是這樣的:

pictureBox1.Visible = true;  
FillReport(); 
timer1.Interval = 5000; 
timer1.Start(); 

而在計時器事件:

private void Timer1_Tick(object sender, EventArgs e) { 
    pictureBox1.Visible = false; 
    timer1.Stop(); 
} 

現在你的形象應該是5秒可見。

但形式仍然不會同時FillReport正在執行重繪。如果你需要的圖像在這一點上是可見的,我建議使用BackgroundWorker執行FillReport,使其不會阻塞UI線程。然後,您可以在RunWorkerCompleted事件中隱藏圖像。

+0

)後面添加這一行,告訴我如何處理加載圖像,以便在Fillreport()函數獲取時顯示圖像執行.... – user3471683

+0

請解釋一下我的backgroundwoker執行,以便它不列入阻塞線程? – user3471683

+0

不 - 嘗試自己弄清楚,如果不能,請提出一個新問題。 – Blorgbeard

相關問題