用户界面-关闭WPF窗口后会发生什么



在我的WPF应用程序中,我有时需要创建一个小的辅助窗口,并且我在第一次需要它时创建了该窗口的实例。

if (mesareaderThreadQueWin == null)
{
    mesareaderThreadQueWin = new MesaReaderThreadQueWindow();    
}
mesareaderThreadQueWin.Show(); 

到目前为止,这是完美的。但是,如果我关闭窗口并再次调用代码,程序会崩溃,告诉我在窗口已经关闭后,我无法执行show

我有点想知道这里到底发生了什么。窗口不是null否则代码将只是创建一个新的实例,但由于我已经显示了窗口,似乎我不能再这样做了。所以窗口一定处于某种中间状态。无法变为可见,但不null

我能检测到这个状态吗?是否有一种方法可以再次重用这个窗口,而不是完全关闭窗口,而是使用hide ?

我能检测到这个状态吗?

据我所知,没有办法访问这个状态

是否有一种方法可以再次重用这个窗口,而不是关闭窗口,而是使用隐藏?

是,处理对话框窗口中的Closing事件,或者覆盖OnClosing方法:

protected override void OnClosing(CancelEventArgs e)
{
    e.Cancel = true;
    this.Hide();
}

你可以处理Closing事件,取消它,然后隐藏窗口:

window.Closing += delegate(object sender, CancelEventArgs e)
{
    e.Cancel = true;
    window.Hide();
};

这确保Window永远不会关闭,并允许您调用Show()任意次数。

考虑到上面的情况,这可能是多余的,但是您可以通过附加到Closed事件并在那里设置标志来检测Window何时关闭。也就是说,维护自己的isClosed变量。

相关内容

  • 没有找到相关文章

最新更新