5

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

问题如下:

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

如何实现这一点C#

4

4 回答 4

8

使用消息创建一个简单的表单(或公开一个公共属性以便能够更改消息,或者使用带有消息参数的构造函数将其传入)并使用此 Show 重载显示表单。然后禁用(整个)原始(所有者)表单(或仅禁用您不希望访问的控件)。

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

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

于 2012-07-16T10:22:19.347 回答
2

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

于 2012-07-16T10:21:27.820 回答
0

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

于 2012-07-16T10:23:02.690 回答
0

您可以这样做的一种方法是创建一个工作类,该类在完成时引发一个事件。

在新的主题中执行工人类,使其在背景中运行。

创建模态表单,并使用一种方法将其关闭作为“完成”事件的事件处理程序。这样,用户界面仍然可以工作并做出响应,并且一旦工作线程完成,表单将关闭。

于 2012-07-16T10:28:21.527 回答