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

Posted

技术标签:

【中文标题】如何在C#中显示没有任何按钮的消息框【英文标题】:How to display message box without any buttons in C# 【发布时间】:2012-07-15 04:25:32 【问题描述】:

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

问题如下:

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

如何在C# 中实现这一点?

【问题讨论】:

【参考方案1】:

使用消息创建一个简单的表单(或公开一个公共属性以便能够更改消息,或者使用带有消息参数的构造函数将其传入)并使用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。

【讨论】:

如何使用 C++/CLR 做到这一点? @Mendes 定义“这个”?后台工作人员?显示设置所有者的表单?你试过什么?你搜索了吗?【参考方案2】:

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

在新的thead 中执行worker 类,使其在背景中运行。

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

【讨论】:

【参考方案3】:

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

【讨论】:

【参考方案4】:

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

【讨论】:

以上是关于如何在C#中显示没有任何按钮的消息框的主要内容,如果未能解决你的问题,请参考以下文章

C#:在自定义消息框中显示进度条变化

如何在消息框中显示来自 C# 的带有 WCHAR* 的 C 函数

窗口消息框中的 C# WPF XAML

如何在 linux 中显示来自 bash 脚本的 GUI 消息框?

如何防止应用程序不显示多个取消消息框?

如何让 tkinter 消息框出现在顶层前面