Harold Finch
Harold Finch

Reputation: 586

Best way to intercept closing of window?

I'm looking for the best way to intercept the closing of a window in my software. For example I want to intercept the closure of a form called "settings", and not the MainWindow. vb.net of the procedure was very simple, I had only to call its closing event, but with WPF I can not understand why this event is not captured, and as a result, the code inside is not executed.

Upvotes: 0

Views: 1159

Answers (3)

adminSoftDK
adminSoftDK

Reputation: 2092

You can acces it from the view model as well if you have one. Like this

Application.Current.MainWindow.Closing += (s, e) =>{ your code comes here};

Upvotes: 0

sidjames
sidjames

Reputation: 117

In the cs file behind your XAML, add this:

    // Constructor
    public SettingsWindow()
    {
        InitializeComponent();

        Closing += SettingsWindow_Closing; // Subscribe to window closing event.
    }

    // Window closing event handler.
    private void SettingsWindow_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    {
        // Add method you want to run on close here.
    }

Upvotes: 0

oppassum
oppassum

Reputation: 1775

In the form you want to intercept the closing for:

    protected override void OnClosing(System.ComponentModel.CancelEventArgs e)
    {
        if(dontClose)
        {
            e.Cancel = true;
        }
        base.OnClosing(e);
    }

Replace dontClose with your conditions for not closing.

Upvotes: 4

Related Questions