gpt4 book ai didi

c# - 在 WPF 中询问窗口是否打开的正确方法

转载 作者:太空狗 更新时间:2023-10-29 22:26:41 27 4
gpt4 key购买 nike

我在主窗口中有这个点击事件来打开一个新窗口

private void Button_Click(object sender, RoutedEventArgs e)
{
cm = new CanalesMain();

cm.Show();

cm.Canales.setValues();

}

我的 cm 变量在我的主窗口中被定义为一个成员类,因为我需要每 5 分钟加载/刷新 setValues() 方法(为此有一个 TimeSpan 和一个 EventHandler)

问题是,在我的“刷新数据”方法中,我有这个 if 语句来询问 cm 变量是否已加载并且不为空(我的意思是,如果窗口曾经打开过或是否打开过,询问是否' t关闭)

if (cm!=null && cm.IsLoaded)
{
cm.Canales.setValues();
}

这是询问我的 window 是否打开的正确或最佳方式吗?

最佳答案

严格来说不,这不是正确的方法。 IsLoaded 并不意味着 Window 可见,只是加载(即使这可能在大多数情况下是等效的,但它意味着 这个窗口已经创建了一次,它有一个句柄,没有提到它的可见性)。

你要检查的是 Visibility属性(这就是 Show() 最终会改变的),它将是 Visible如果 Window 当前可见,或者 Hidden 如果它还没有被加载(或者它已经被加载但它仍然是但实际上是隐藏的)。

总结:

if (cm != null && cm.Visibility == Visibility.Visible)
{
}

请注意,如果 Window 是可见的,那么它是隐含的,它已经被加载(它有一个句柄)但反之亦然(加载的窗口可能不可见,也许它是甚至过去都没有)。

关于c# - 在 WPF 中询问窗口是否打开的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19660337/

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