2012-11-25 28 views
0

我有一個LabelPictureBox元素,在設計師我設置的可見性爲false。按下按鈕並選擇一個文件沒有反應,直到我完成在//more code部分的代碼,然後將標籤更改時改變能見度不工作

private void openExcelButton_Click(object sender, EventArgs e) 
    { 

     openExcelDialog.Filter = "Excel files|*.xls;*.xlsx;*.csv"; 
     DialogResult result = openExcelDialog.ShowDialog(); 
     if (result == DialogResult.OK) // Test result. 
     { 
      LoadingGIF.Visible = true; 
      LoadingLabel.Text = "Loading..."; 
      LoadingLabel.Visible = true; 
      string file = openExcelDialog.FileName; 

      //more code 
      LoadingGIF.Visible = false; 
      LoadingLabel.Text = "Uploading Finished!"; 



     } 
    } 

現在:

我現在試試這個。

爲什麼會發生這種情況?

+1

因爲你的窗體將不會收到更多的Windows消息,直到它完成處理'點擊'一個(然後控件將不會被繪成可見)。添加(我不喜歡它)Application.DoEvents()在「更多代碼」之前或使其異步 –

+0

歡迎Eric! –

回答

0

發生這種情況的原因是因爲您的主線程變得無法響應並且不允許按順序發生更改。一年前,我在一個項目上遇到了非常類似的問題。 MS建議的解決方案是使用後臺工作人員打開文件並對其進行處理,以使主線程不會變得不響應。微軟有一個相當體面的例子來說明如何在這裏使用後臺工作:http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx