如何关闭newWindow(如果已经打开)然后打开该newWindow? WPF

时间:2019-03-18 08:56:51

标签: c# .net wpf visual-studio

我要检查按钮单击事件(打开newWindnow)。 如果newWindow已经打开,则应先将其关闭,然后再将其打开..因为我可以每次都为该newWindow创建动态内容。 这是Winform应用程序中的代码,但是WPF需要它

private void button_Click(object sender, EventArgs e)
{
using (Form fc= Application.OpenForms["newWindow"])
{
if (fc!=null){
fc.Close();
nw= new newWindow(Id, Ip, name);
}
else{
nw= new newWindow(Id, Ip, name);
}
}
nw.Show();
}

谢谢

2 个答案:

答案 0 :(得分:1)

只需查看Application.Current.Windows而不是Application.OpenForms。 WPF等效于:

private void button_Click(object sender, RoutedEventArgs e)
{
    var fc = Application.Current.Windows.OfType<newWindow>().FirstOrDefault();
    if (fc != null)
    {
        fc.Close();
    }
    nw = new newWindow(Id, Ip, name);
    nw.Show();
}

答案 1 :(得分:0)

How do I know if a WPF window is opened

您可以创建如下的帮助方法:

public static bool IsWindowOpen<T>(string name = "") where T : Window
{
    return string.IsNullOrEmpty(name)
       ? Application.Current.Windows.OfType<T>().Any()
       : Application.Current.Windows.OfType<T>().Any(w => w.Name.Equals(name));
}

用法:

if (Helpers.IsWindowOpen<Window>("MyWindowName"))
{
   // MyWindowName is open
}

if (Helpers.IsWindowOpen<MyCustomWindowType>())
{
    // There is a MyCustomWindowType window open
}

if (Helpers.IsWindowOpen<MyCustomWindowType>("CustomWindowName"))
{
    // There is a MyCustomWindowType window named CustomWindowName open
}