gpt4 book ai didi

c# - WPF - C# - 只打开父窗口一次

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

我正在用 C# 和 WPF 编写一个简单的程序。我有一个带有按钮的主窗口。如果我触发按钮,它会打开第二个窗口:

private void btnF4_Click(object sender, RoutedEventArgs e)
{
SecondWindow second = new SecondWindow();
second.Show();
}

自然地,如果我触发按钮三到四次,我就会打开三到四个窗口。我不想使用 ShowDialog(),但我只想打开我的第二个窗口一次。我的意思是,如果我触发按钮并且窗口已经打开,应该什么也没有发生。

谢谢!

最佳答案

使 second 成为父窗口类的实例变量,并且仅在尚未创建新窗口时才创建新窗口。

当然,您需要确保在关闭第二个窗口时null实例变量。

public class ParentWindow ...
{
private SecondWindow m_secondWindow = null;

....

private void btnF4_Click(object sender, RoutedEventArgs e)
{
if (m_secondWindow == null)
{
m_secondWindow = new SecondWindow();
m_secondWindow.Closed += SecondWindowClosed;
m_secondWindow.Show();
}
}


public void SecondWindowClosed(object sender, System.EventArgs e)
{
m_secondWindow = null;
}
}

这可能会缩短为以下内容:

public class ParentWindow ...
{
private SecondWindow m_secondWindow = null;

....

private void btnF4_Click(object sender, RoutedEventArgs e)
{
if (m_secondWindow == null)
{
m_secondWindow = new SecondWindow();
}

m_secondWindow.Show();
}
}

但是,我不确定您是否真的可以“重新打开”之前关闭的窗口。如果您需要在重新打开时重新初始化窗口,请使用第一个代码。如果您可以接受启动时显示之前内容的窗口,请使用第二个。

关于c# - WPF - C# - 只打开父窗口一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22221186/

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