2012-03-23 22 views
0

我有一個表單顯示ShowDialog()。在表單關閉之後,我將顯示一個帶有進度條的新表單,除非在出現進度條表單之前先前的表單不會完全刪除。我該如何處理?以前的表單不能及時清除新表單

using(FormA formA= new FormA) 
{ 
    if(formA.ShowDialog()==DialogResult.OK) 
    { 

    } 
} 

FormB formB = new FormB; 
formB.Show(); 
...{ 
    formB.progressBar.PerformStep(); 
...} 
formB.Close();     
+0

請添加一些代碼,以便我們可以。如果你不使用一個BackgroundWorker你的進度看 – Jon 2012-03-23 20:14:36

+5

的猜測是,你是阻止你處理的UI和「幽靈」,你看到的是無力gui正確地刷新表格。 – LarsTech 2012-03-23 20:27:20

回答

1

你可能會阻塞UI線程,試試這個:

using(FormA formA= new FormA) 
{ 
    if(formA.ShowDialog()==DialogResult.OK) 
    { 

    } 
} 

Application.DoEvents(); //make sure the ui refreshes 

FormB formB = new FormB; 
formB.Show(); 
...{ 
    formB.progressBar.PerformStep(); 
...} 
formB.Close(); 
0

在下面的代碼的代碼FormB將在FormA的形成封閉的情況下進行,確保FormA關閉之前顯示FormB

using(FormA formA= new FormA) 
{ 
    formA.FormClosed += delegate(...) { 
     FormB formB = new FormB; 
     formB.Show(); 
     ...{ 
      formB.progressBar.PerformStep(); 
     ...} 
     formB.Close(); 
    }; 
    if(formA.ShowDialog()==DialogResult.OK) 
    { 

    } 
}