【问题标题】:Check whether message box is open WPF C#?检查消息框是否打开 WPF C#?
【发布时间】:2011-12-22 11:39:23
【问题描述】:

我有一个 WPF 应用程序,如果它被停用,窗口会变小并移到一边。但是如果窗口上打开了一个消息框,我不希望这个功能发生。有什么方法可以检查 C# 代码中是否打开了任何对话框?

【问题讨论】:

  • “如果窗口被停用,窗口会变小并移到一边” - 了解 1) 如果您自己执行此操作,或者您正在谈论某种标准,这将很有帮助行为 2) 你是如何做到这一点的,以防有某种方法可以防止特定于你的应用的操作
  • 我自己做了动画。如果我可以检查对话框是否打开,我可以告诉我的动画是否执行相同的操作。
  • 是哪种对话框?
  • Messagebox.Show("some message")

标签: c# wpf


【解决方案1】:

将对 MessageBox 的调用包装在静态类/方法中。如果调用此方法,请设置您的 MessageBox 已打开的标志。

类似这样的:

  public class MessageBoxWrapper
  {
    public static bool IsOpen {get;set;} 

    // give all arguments you want to have for your MSGBox
    public static void Show(string messageBoxText, string caption)
    {
     IsOpen = true;
     MessageBox.Show(messageBoxText, caption);
     IsOpen = false;
    }
  }

用法:

MessageBoxWrapper.Show("TEST","TEST");
MessageBoxWrapper.IsOpen

但你必须确保始终使用 Wrapper 来调用 MessageBox

【讨论】:

    【解决方案2】:

    在打开 MessageBox 时在某处设置标志。关闭 MessageBox 时取消设置。

    在处理停用时检查标志。

    如果有可能一次打开多个 MessageBox,那么您需要考虑一下,否则关闭一次会使它看起来好像没有打开。

    【讨论】:

    • 如果有多个 MessageBox,请使用计数器。 MessageBox 打开时增加,关闭时减少。
    猜你喜欢
    • 2021-03-16
    • 2020-10-12
    • 1970-01-01
    • 2012-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 1970-01-01
    相关资源
    最近更新 更多