我有一个WPF窗口,我通过调用从另一个窗口创建Show(),然后让它Close()自己.当窗口关闭时,我希望它会死掉,调用它的析构函数,并删除它的所有子元素(比如计时器......).
调用此类操作的正确方法是什么?
roo*_*024 11
为了以防万一,我会加上我的两分钱.
我的问题是我没有做足够的故障排除.我的窗口是一个可以打开,关闭和重新打开的子窗口,所以我添加了以下内容以防止它完全关闭:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
e.Cancel = true;
this.Hide();
}
Run Code Online (Sandbox Code Playgroud)
但是,当调用Window.Close时,它只隐藏窗口.我最终抓住了并添加了以下内容:
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e) {
e.Cancel = true;
this.Hide();
}
public void Close() {
this.Closing -= Window_Closing;
//Add closing logic here.
base.Close();
}
Run Code Online (Sandbox Code Playgroud)
这很好 - 它删除了阻止窗口关闭的事件处理程序,然后关闭它.