非模态“状态”形式

时间:2010-05-31 11:37:35

标签: c# forms non-modal

在一段可能需要几秒钟才能完成的C#代码的开头,我想显示一个带有标签的非模态表单,上面写着“请稍候......”

WaitForm myWaitForm = null;

try
{
  // if conditions suggest process will take awhile
  myWaitForm = new WaitForm();
  myWaitForm.Show();

  // do stuff
}
finally
{
  if (myWaitForm != null)
  {
    myWaitForm.Hide();
    myWaitForm.Dispose();
    myWaitForm = null;
  }
}

问题:在其余代码占用线程之前,WaitForm没有完全显示。所以我只看到表格的框架。在Delphi(我的旧st脚)中,我会在Show()之后调用Application.ProcessMessages在C#中是否有等价物?我可以在这样的情况下使用罐装“状态”表格吗?有没有更好的方法来解决这个问题?

提前致谢。 大卫詹宁斯

4 个答案:

答案 0 :(得分:5)

你需要在另一个主题中运行do stuff部分 然后全部myWaitForm.Show()
请查看BackgroundWorker课程here

答案 1 :(得分:1)

您最好将“do stuff”代码移动到其他线程。 并使用Application.DoEvents()处理表单消息

答案 2 :(得分:1)

我同意“其他线程”的建议,但出于简单和简短的目的,Application.DoEvents()将会这样做。

答案 3 :(得分:0)

您正在寻找的术语是“闪屏”。

以下是一些相关评论。 https://stackoverflow.com/search?q=splash+screen+c%23