如何在C#中没有任何按钮的情况下显示消息框

时间:2012-07-16 10:19:22

标签: c# loader busyindicator

我尝试在执行操作时向用户显示MESSAGE。 MESSAGE不会显示任何按钮。只是一个MESSAGE(文本),也许是一个背景图片。

问题如下:

  • MessageBox似乎不是一个好的控件(因为按钮,它会阻止正在运行的进程)。
  • Form.ShowDialog()也会阻止正在运行的进程。我不知道该怎么做。
  • 我想显示消息,运行我的流程,并在流程完成后处理消息。

如何在C#中实现这一目标?

4 个答案:

答案 0 :(得分:6)

使用消息创建一个简单的表单(或公开一个公共属性以便能够更改消息,或者使用带有message参数的构造函数来传递它)并使用this Show overload显示表单。然后禁用(整个)原始(所有者)表单(或者只是禁用您不想访问的控件)。

所以,在你的“主要”形式中这样做:

Form f = new MessageForm();
f.Show(this);         //Make sure we're the owner
this.Enabled = false; //Disable ourselves
//Do processing here
this.Enabled = true;  //We're done, enable ourselves
f.Close();            //Dispose message form

另外,请考虑使用BackgroundWorker

答案 1 :(得分:2)

创建自定义表单,并编写自己的行为

答案 2 :(得分:0)

创建一个自定义表单,将其设置为最小样式等。确保它知道进程何时完成,例如通过传入对进程的引用并不时地检查它。

答案 3 :(得分:0)

你可以做的一种方法是创建一个在完成时引发事件的工人类。

在新的thead中执行worker类,因此它将运行它作为背景。

使用方法创建模态窗体,将其关闭为“已完成”事件的事件处理程序。 这样ui仍然可以工作并响应,并且一旦工作线程完成,表单就会关闭。