У меня есть проект WPF, в котором у меня есть окно с пользовательской логикой Close. Я хочу, чтобы какой-то код запускался, когда пользователь закрывает окно. Я знаю два способа сделать это, и мне интересно, что лучше:
Вариант 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 лучше, потому что он просто выглядит чище для меня. Я предпочитаю переопределять методы обработки событий.
Существуют ли другие различия между этими двумя параметрами? Я знаю, что Option 1 предоставляется для какого-либо другого класса для обработки этого окна. Закрытие события.
Изменить: я забыл упомянуть, что я использую .Net 4.0. Похоже, что .Net 4.5 имеет событие OnFormClosing, которое отменяет событие OnClosing. Я не использовал событие OnFormClosing.