我有一個WPF項目,我有一個自定義關閉邏輯窗口。我想要一些代碼在用戶關閉窗口時運行。我知道兩種方法來做到這一點,我想知道哪個更好:我應該使用Closing事件還是重寫OnClosing?
選項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事件。
我還沒有發現,在我的測試是真實的。在這兩種情況下,該方法都有一個'System.ComponentModel.CancelEventArgs e'參數。如果我在任何一個選項的任何時候調用'e.Cancel = true;',當用戶單擊窗口右上角的紅色X時,窗口不會關閉。 – user2023861