【问题标题】:How to know child window is open or closed ? WPF如何知道子窗口是打开还是关闭? WPF
【发布时间】:2019-03-18 06:08:06
【问题描述】:

在 WPF 中,我如何知道子窗口是否打开? 我的目标是同时只打开一个窗口实例..

这是父窗口中的伪代码

if (newWindowIsOpened)    //just a pseudo code
{
newWindow.Close();
newWindow.Show();
}
else{
newWindow.Show();
}

提前谢谢

【问题讨论】:

    标签: c# wpf visual-studio window


    【解决方案1】:

    在 WPF 中,我如何知道是否打开了子窗口

    Application.Current.Windows中寻找它:

    var oldWindow = Application.Current.Windows.OfType<YourWindowType>().FirstOrDefault();
    if (oldWindow != null)
    {
        oldWindow .close();
    }
    YourWindowType newWindow = new YourWindowType();
    newWindow.Show();
    

    【讨论】:

      【解决方案2】:

      您可以添加以下代码

      public bool newWindowIsOpened;

          public Window14()
          {
              InitializeComponent();
      
              Window1 window1 = new Window1();
              window1.Closed += new EventHandler(window1_Closed);
              newWindowIsOpened = false;
              window1.Show();
          }
      
          void window1_Closed(object sender, EventArgs e)
          {
              newWindowIsOpened = true;
          }
      

      谢谢, 阿杰·杜贝迪

      【讨论】:

      • 谢谢,但我有按钮单击事件。如果用户请求该特定新窗口,我需要先关闭它(如果它已经打开)然后打开新窗口。实际上我可以每个要打开的新窗口的动态内容..这就是我正在寻找的
      • 此答案完全符合您的要求,您只需添加几行即可关闭并重新打开窗口
      【解决方案3】:

      一旦窗口关闭,您将无法再次显示它。你可以重复调用Show()Hide(),你可以通过检查IsVisible来测试它是否“打开”

      【讨论】:

      • 谢谢,你是对的......一旦窗口关闭,就无法再次显示......但我需要将此代码放在按钮点击事件中......如果用户请求那个特定的窗口我需要先关闭它(如果它已经打开)然后打开新窗口..实际上我可以为每个正在打开的新窗口提供动态内容..这就是我正在寻找的
      • 没关系,如果它是打开的,那么 IsVisible 将是真的,直到你调用 Show() 才会设置它。
      • 但是如何(通过父窗口)检查新窗口是否已经打开?
      • 您的意思是在您致电Show() 之后?订阅Loaded事件。窗口初始化不会立即发生,因此您必须订阅回调事件。
      猜你喜欢
      • 2018-10-13
      • 2013-04-18
      • 1970-01-01
      • 1970-01-01
      • 2012-10-11
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2014-11-03
      相关资源
      最近更新 更多