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

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

问题如下:

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

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

【问题讨论】:

    标签: c# loader busyindicator


    【解决方案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】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-11-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-25
          • 1970-01-01
          相关资源
          最近更新 更多