我有一个WPF应用程序,如果它被取消激活,窗口会变小并移到侧边。但是,如果窗口上有消息框,我不想发生这种情况。在C#代码中,我们可以检查是否有任何对话框框打开来实现这个功能吗?
我有一个WPF应用程序,如果它被取消激活,窗口会变小并移到侧边。但是,如果窗口上有消息框,我不想发生这种情况。在C#代码中,我们可以检查是否有任何对话框框打开来实现这个功能吗?
将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。
打开MessageBox时,在某个地方设置一个标志。当MessageBox关闭时取消设置标志。
在处理去激活事件时检查该标志。
如果有可能同时打开多个MessageBox,则需要考虑这一点,否则一个关闭将使它看起来好像没有打开的MessageBox。