以前的表单不能及时清除新表单
问题描述:
我有一个表单显示ShowDialog()
。在表单关闭之后,我将显示一个带有进度条的新表单,除非在出现进度条表单之前先前的表单不会完全删除。我该如何处理?以前的表单不能及时清除新表单
using(FormA formA= new FormA)
{
if(formA.ShowDialog()==DialogResult.OK)
{
}
}
FormB formB = new FormB;
formB.Show();
...{
formB.progressBar.PerformStep();
...}
formB.Close();
答
你可能会阻塞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)
{
}
}
请添加一些代码,以便我们可以。如果你不使用一个BackgroundWorker你的进度看 – Jon 2012-03-23 20:14:36
的猜测是,你是阻止你处理的UI和“幽灵”,你看到的是无力gui正确地刷新表格。 – LarsTech 2012-03-23 20:27:20