检查WPF窗口是否已打开

时间:2018-03-25 13:49:21

标签: c# wpf

如何检查窗户是否打开。有可能吗?

例如:

if (window.IsOpen)
{
    // window is open
}
else
{
    // window is not open
}

2 个答案:

答案 0 :(得分:2)

检查当前应用程序中是否显示窗口:

if(System.Windows.Application.Current.Windows.Contains(yourWindow)) {
    // the window has been shown
} else {
    yourWindow.Show();
}

检查窗口是否未最小化:

if(yourWindow.WindowState != WindowState.Minimized) {
    // the window is currently not minimized
} else {
    yourWindow.WindowState = WindowState.Normal;
    // or WindowState.Maximized
}

答案 1 :(得分:0)

您可以在窗口打开时保留对该窗口的引用。在这种情况下,你真的不需要在Windows中找到它。 否则,您必须根据给定窗口的类型获取它。

        Window1 instance = Application.Current.Windows.OfType<Window1>().SingleOrDefault();
        if (instance !=null)
        {
            instance.Show();
        }

如果这可以是几种类型的窗口类型之一,并且您需要通用方法,那么它会更加繁琐。 这里我的类型有一个固定的值,但是你想要每个窗口都有一个按钮,每个窗口都有一个窗口的类型。

        Type specificType = typeof(Window1);
        Window instance = null;
        foreach (Window win in Application.Current.Windows)
        {
            if(win.GetType() == specificType)
            {
                instance = win;
            }
        }
        if (instance != null)
        {
            instance.Show();
        }