我尝试在执行操作时向用户显示 MESSAGE。MESSAGE 不会显示任何按钮。只是一个消息(文本),也许是一个背景图像。
问题如下:
- MessageBox 似乎不是很好的控件(因为按钮,它阻塞了正在运行的进程)。
- Form.ShowDialog() 也会阻塞正在运行的进程。我不知道该怎么办。
- 我想显示消息,运行我的流程,并在流程完成后处理消息。
如何实现这一点C#
?
我尝试在执行操作时向用户显示 MESSAGE。MESSAGE 不会显示任何按钮。只是一个消息(文本),也许是一个背景图像。
问题如下:
如何实现这一点C#
?
使用消息创建一个简单的表单(或公开一个公共属性以便能够更改消息,或者使用带有消息参数的构造函数将其传入)并使用此 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。
创建自定义表单,并编写自己的行为
创建一个自定义表单,将其设置为最小样式等。确保它知道该过程何时完成,例如通过传递对该过程的引用并不时检查它。
您可以这样做的一种方法是创建一个工作类,该类在完成时引发一个事件。
在新的主题中执行工人类,使其在背景中运行。
创建模态表单,并使用一种方法将其关闭作为“完成”事件的事件处理程序。这样,用户界面仍然可以工作并做出响应,并且一旦工作线程完成,表单将关闭。