2011-12-02 52 views
6

我正在使用窗口應用程序和C#..我有一張圖片,它在應用程序的開始處是不可見的。當點擊某個按鈕時,圖片框必須是顯示..PictureBox可見屬性不起作用...請幫助

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

private void save_click(object sender, EventArgs e) 

{ 

     pictureBox1.Visible = true; 
     pictureBox1.Show(); 

     //does the work here 
     //storing and retreiving values from datadase 

    pictureBox1.Visible = false; 
    pictureBox1.Hide(); 
} 

PS ..在圖片框中我顯示的GIF ..所以用戶會知道,有些工作是怎麼回事在後臺.. 功能需要很長時間才能完成...

回答

5

假設保存到數據庫需要一些時間,您應該使用BackgroundWorker異步執行操作,操作完成後隱藏您的PictureBox。

圖片當前沒有顯示的原因是因爲當您長時間運行的保存操作正在發生時,Windows消息沒有被處理,所以您的表單將不響應用戶輸入而不執行重繪。保存操作完成後,再次開始處理消息時,圖片框已被再次隱藏。

1

您的圖片框將不會顯示,因爲您要在顯示圖片框的時間內在UI線程上運行其他操作。直到UI線程變爲空閒 - 即在您的方法之後,UI纔會被重新繪製(顯示圖片框)。

爲了解決這個問題,你需要首先顯示圖片框,然後啓動一個線程來運行你的操作(這將允許WinForms繼續交互並繪製UI),然後用回調函數結束UI線程隱藏圖片框。

有關此多線程執行過程的幫助,請參閱此StackOverflow Question

2

要避免使用多線程,所有你能做的就是pictureBox1.Refresh();pictureBox1.Visible = true;如下:

private void save_click(object sender, EventArgs e) 
{ 
    pictureBox1.Visible = true; 
    pictureBox1.Refresh(); 

    //does the work here 
    //storing and retreiving values from datadase 

     pictureBox1.Visible = false; 
}