gpt4 book ai didi

c# - 我如何知道 WPF 窗口是否打开

转载 作者:IT王子 更新时间:2023-10-29 04:08:37 28 4
gpt4 key购买 nike

在 WPF 窗口中,我如何知道它是否打开?

我的目标是一次只打开窗口的 1 个实例。

所以,我在父窗口中的伪代码是:

if (this.m_myWindow != null)
{
if (this.m_myWindow.ISOPENED) return;
}

this.m_myWindow = new MyWindow();
this.m_myWindow.Show();

编辑:

我找到了解决我最初问题的解决方案。窗口.ShowDialog();

它阻止用户打开任何其他窗口,就像模态弹出窗口一样。使用此命令,无需检查窗口是否已打开。

最佳答案

WPF 中,Application 类中有一个打开的 Windows 的集合,您可以创建一个辅助方法来检查窗口是否打开是开放的。

下面是一个示例,它将检查某个 Type 的任何 Window 或具有特定名称的 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));
}

用法:

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
}

关于c# - 我如何知道 WPF 窗口是否打开,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16202101/

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