gpt4 book ai didi

c# - 我应该使用 Closing 事件还是重写 OnClosing?

转载 作者:可可西里 更新时间:2023-11-01 07:54:04 25 4
gpt4 key购买 nike

我有一个 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 事件。

最佳答案

主要区别在于您在调用基本代码时确定的覆盖。使用事件时,您无法控制它。使用事件时,您本质上就是基本代码。

这有时是一个重要的区别,因为如果有事件的消费者,但您需要在他们被调用之前完成工作,那么您需要覆盖。

在这种情况下——可能差别不大。

关于c# - 我应该使用 Closing 事件还是重写 OnClosing?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20954051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com