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

5
我尝试在操作执行时向用户显示一个消息。该消息不会显示任何按钮,只有一条消息(文本)和可能的背景图像。
问题如下:
- MessageBox似乎不是好的控件(因为它有按钮并且会阻塞运行过程)。 - Form.ShowDialog()也会阻塞运行过程。我不知道该怎么办。 - 我想显示消息、运行进程并在进程完成后关闭消息。
如何在C#中实现这一点?
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

如何使用C++/CLR实现这个? - Mendes
@Mendes 定义“this”?是指BackgroundWorker吗?显示一个带有设置所有者的窗体?你尝试过什么?有搜索过吗? - RobIII

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

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

0

你可以创建一个工作类,当它完成时引发一个事件。

在新线程中执行工作类,使其在后台运行。

为“完成”事件创建模态窗体,并将关闭它的方法作为事件处理程序。这样UI仍然可以工作和响应,一旦工作线程完成,窗体就会关闭。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接