【问题标题】:using one popup control for every window to show progress message in WPF为每个窗口使用一个弹出控件以在 WPF 中显示进度消息
【发布时间】:2011-12-30 13:40:00
【问题描述】:

我的 WPF 应用程序中有大约 15 个窗口,每个窗口调用一个类进行操作

例如:加载、删除等,我不想在每个窗口中添加弹出控件。每一次操作

操作类中的方法以Window为参数,有什么方法可以显示

操作方法在此窗口弹出操作进度信息?

或任何其他更好的方法来显示进度消息,同时显示进度消息

应禁用窗口以阻止用户进行任何其他操作。

谢谢

【问题讨论】:

    标签: c# .net wpf


    【解决方案1】:

    根据您的说法,您的状态窗口是一个模式窗口。如果您让所有操作类实现相同的接口来报告进度(并且还通知正在完成的操作,我猜),您可以只创建一个状态窗口,您可以在操作完成时实例化,并且您会调用使用 ShowDialog。

    【讨论】:

      【解决方案2】:

      我会创建一个静态类来管理状态消息,并让主窗口在这些消息进入时进行监听。这样只有主窗口负责显示弹出窗口,所有其他窗口都转到一个地方报告状态更新。

      伪:

      static class StatusManager
      {
          delegate onMessageReceivedEvent(string message);
          static event onMessageReceivedEvent OnMessageReceived;
      
          static void PostMessage(string message)
          {
              if(OnMessageReceived != null)
                   OnMessageReceived.Invoke();
          }
      }
      

      在您的主窗口中,只需 += OnMessageReceived 并在事件中发布消息。

      此外,如果您只想让状态消息一直显示直到所有其他消息都完成,请保留正在运行的窗口的计数器,一旦达到 0,请关闭弹出窗口。您可以简单地在弹出窗口中监听事件并以这种方式更新 gui。请记住检查调度程序以确保更新 gui 是安全的。

      【讨论】:

      • 我相信你的意思是Pseudostatic
      • 我想我从今天早上开始我的互联网冒险 :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-28
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多