gpt4 book ai didi

c# - 如何检查窗口是否已经打开?重复窗口

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:34 24 4
gpt4 key购买 nike

我有一个打开窗口的按钮。

如果再次按下该按钮,它会打开同一窗口的副本。

info = new Info();
info.Owner = Window.GetWindow(this);
info.Show();

如何检查窗口是否已经打开,并拒绝重复打开?

我无法使用 info.ShowDialog(),因为它会禁用 Main Window


无效的解决方案:

Info info = new Info();

if (!info.IsActive)
{
info = new Info();
info.Owner = Window.GetWindow(this);
info.Show();
}

Info info = new Info();

if (info.Visibility != Visibility.Visible)
{
info.Owner = Window.GetWindow(this);
info.Show();
}

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 buttonInfo_Click(object sender, RoutedEventArgs e)
{
if (!IsWindowOpen<Window>("Info"))
{
Info info = new Info();
info.Owner = Window.GetWindow(this);
info.Show();
}
}

最佳答案

仅当值不为空时才创建表单。如果表单已关闭,则使用 FormClosed 事件将该值恢复为 null。

public static Info info;

if(info == null){
info = new Info();
info.Show();
}

将事件表单关闭到信息表单上

 private void info_FormClosed(object sender, FormClosedEventArgs e)
{
MainForm1.info = null;
}

对我有用

关于c# - 如何检查窗口是否已经打开?重复窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39453300/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com