如何在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# 的带有 WCHAR* 的 C 函数