【问题标题】:How to close a hidden window (WPF application)?如何关闭隐藏窗口(WPF 应用程序)?
【发布时间】:2014-02-03 06:17:15
【问题描述】:

在我的应用程序 (WPF) 中,我有这个窗口:

public partial class Window1 : Window 和 Xaml 中的x:Class="WpfApplication1.Window1"

现在,当我在主窗口和窗口 1 之间来回切换时,我使用 Visibility.Hidden 和 Visibility.Visible 来隐藏它们并让它们再次显示给用户。

我现在尝试做的是在主窗口中创建一个测试按钮,上面写着:关闭 Window1。 这个窗口是隐藏的,但我真的很想在后台关闭它。 起初我虽然只是使用Window.Close();,但这似乎并没有奏效。

那么,我应该如何以正确的方式做到这一点? 非常感谢您。

编辑 1 - 使问题更清晰

要在我的主窗口中打开 window1,我使用这部分

Window1 W1 = null; // Initialise Field.
  public void CalcTabel_Click(object sender, RoutedEventArgs e)
   {
    if (W1 == null)
    {
     W1 = new Window1();
     W1.Hoofdmenu = this;
     W1.checkLang();
     W1.Show();
    }
   else
    {
     W1.checkLang();
     W1.Visibility = Visibility.Visible;
    }
   this.Visibility = Visibility.Hidden;
   }

在窗口 1 上有一个后退按钮,里面有这段代码(其中“Hoofdmenu”是我们的主窗口):

Hoofdmenu.updateStatistics();
Hoofdmenu.Visibility = Visibility.Visible;
this.Visibility = Visibility.Hidden;

但同样,这一次站在主窗口中时(因此窗口 1 被隐藏)我想关闭该窗口 1。但使用 W1.Close() 似乎不起作用。所以我正在寻找一种方法来关闭那个窗口 1,改变它的可见性。

编辑 2 - 解决方案

所以使用W1.Close(); 确实没有 工作,虽然一个小的改变this.W1.Close(); 实际上工作:)

【问题讨论】:

  • 为什么隐藏窗口没有关闭?您能否发布更多示例代码以阐明您在做什么?关闭时所做的任何事情都会破坏关闭信号?
  • 在window1中,一些按钮被点击,改变了它的外观。我可以确定窗口并没有真正关闭,因为否则它们会被重置为默认值,而这并没有发生。我会看看我是否可以对上面的内容进行更多编辑以使其更清晰。
  • 能否将 W1.Close() 放入 Try Catch 块并发布异常?
  • 在我的编辑中发布了解决方案 :)

标签: c# wpf window


【解决方案1】:

您可以在窗口中创建 Form2 的对象并将其可见性初始化为 false。

点击按钮,你可以简单地说

public partial class MainWindow : Window
  {
    private Window1 window2;

    public MainWindow()
    {
      InitializeComponent();
      this.window2 = new Window1();

      this.window2.Show();
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
      this.window2.Visibility = System.Windows.Visibility.Hidden;
    }
  }

让它再次可见

【讨论】:

  • 编辑了您的帖子,并在此处清除 cmets 以供将来阅读:)
【解决方案2】:

阅读您的代码后,这不可能是您想要的方式。 window1 实例是本地对象。所以如果这种方法你不能把它伸出来。 最好的方法是在 window1 上有一个关闭按钮 this.close() 或者您在主窗口中创建一个全局实例,然后检查是否不为空,然后将其关闭。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-21
    • 2010-10-19
    • 2011-06-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多