检查WPF C#中消息框是否打开?

7

我有一个WPF应用程序,如果它被取消激活,窗口会变小并移到侧边。但是,如果窗口上有消息框,我不想发生这种情况。在C#代码中,我们可以检查是否有任何对话框框打开来实现这个功能吗?


"当窗口被取消激活时,窗口会变小并移动到侧边。" - 为了更清楚地了解情况:1)请告知这是否是您自己编写的功能,还是某种标准行为;2)如果有特定方法可以防止发生该动作,请告知您是如何实现的。 - Merlyn Morgan-Graham
我自己做了动画。如果我能检查对话框是否打开,我就可以告诉我的动画是否执行相同的操作。 - sony
它是哪种对话框? - snurre
Messagebox.Show("一些信息") - sony
2个回答

15

将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。


1

打开MessageBox时,在某个地方设置一个标志。当MessageBox关闭时取消设置标志。

在处理去激活事件时检查该标志。

如果有可能同时打开多个MessageBox,则需要考虑这一点,否则一个关闭将使它看起来好像没有打开的MessageBox。


1
如果有多个MessageBox,请使用计数器。当一个MessageBox打开时,增加它,关闭时减少它。 - Em1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接