以前的表单不能及时清除新表单

以前的表单不能及时清除新表单

问题描述:

我有一个表单显示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

你可能会阻塞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(); 

在下面的代码的代码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) 
    { 

    } 
}