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();否则显示一个新窗口谢谢你的回答