【发布时间】:2014-01-06 16:05:33
【问题描述】:
我有一个 WPF 项目,其中有一个带有自定义关闭逻辑的窗口。我希望在用户关闭窗口时运行一些代码。我知道有两种方法可以做到这一点,我想知道哪种方法更好:
选项 1) 处理 base.Closing 事件。
选项 2) 覆盖 OnClosing 方法。
这里有一些示例代码:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
base.Closing += this.MainWindow_Closing;
}
//Option 1
void MainWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
//close logic here, or
}
//Option 2
protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
{
//close logic here
base.OnClosing(e);
}
}
我能发现这两个选项之间的唯一区别是外观。我更喜欢选项 2,因为它对我来说看起来更干净。我更喜欢覆盖方法而不是处理事件。
这两个选项之间还有其他区别吗?我知道选项 1 是为其他一些类提供的,以处理此窗口的关闭事件。
编辑:我忘了提到我使用的是 .Net 4.0。看起来 .Net 4.5 有一个 OnFormClosing 事件,它弃用了 OnClosing 事件。我没有使用 OnFormClosing 事件。
【问题讨论】: