Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查WPF窗口的打开或关闭_C#_Wpf_Wpf Controls_Wpf 4.0 - Fatal编程技术网

C# 如何检查WPF窗口的打开或关闭

C# 如何检查WPF窗口的打开或关闭,c#,wpf,wpf-controls,wpf-4.0,C#,Wpf,Wpf Controls,Wpf 4.0,我想检查一下窗户是开着还是关着。如果窗口已打开,则对其进行聚焦。如果窗口已关闭,请打开窗口 我使用以下代码: public static bool IsWindowOpen<T>(string name = "") where T : Window { return string.IsNullOrEmpty(name)? Application.Current.Windows.OfType<T>().Any(): Application.Current.Window

我想检查一下窗户是开着还是关着。如果窗口已打开,则对其进行聚焦。如果窗口已关闭,请打开窗口

我使用以下代码:

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));
}

private void MenuItem1_OnClick(object sender, RoutedEventArgs e)
{
    if (IsWindowOpen<Window>("TestForm")) return;
    var window1 = new Window1 { Name = "TestForm", Title = "Welcome", };
    window1.Show();
}
publicstaticboolswindowopen(stringname=“”)其中T:Window
{
返回字符串.IsNullOrEmpty(name)?Application.Current.Windows.OfType().Any():Application.Current.Windows.OfType().Any(w=>w.name.Equals(name));
}
private void MenuItem1\u OnClick(对象发送方、路由目标方)
{
如果(IsWindowOpen(“TestForm”))返回;
var window1=newwindow1{Name=“TestForm”,Title=“Welcome”,};
window1.Show();
}
您能帮个忙吗?

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

private void MenuItem1_OnClick(object sender, RoutedEventArgs e)
{
    var window = IsWindowOpen<Window>("TestForm");

    if (window != null)
    {
        window.Focus();
    }
    else
    {
        window = new Window1 { Name = "TestForm", Title = "Welcome", };
        window1.Show();
    }
}
T:窗户在哪里 { var windows=Application.Current.windows.OfType(); 返回字符串.IsNullOrEmpty(name)?windows.FirstOrDefault():windows.FirstOrDefault(w=>w.name.Equals(name)); } private void MenuItem1\u OnClick(对象发送方、路由目标方) { var window=IsWindowOpen(“TestForm”); 如果(窗口!=null) { window.Focus(); } 其他的 { window=newwindow1{Name=“TestForm”,Title=“Welcome”,}; window1.Show(); } }
您从未说过有什么问题,也许您可以将“我使用此代码”更改为“我使用此代码,但…”=)我不会更改窗口是否打开该窗口焦点更改IsWindowOpen,使其返回空窗口或现有窗口,然后在OnClick事件中设置窗口。Focus();否则显示一个新窗口谢谢你的回答