执行代码时,WPF关闭(Execute code when a WPF closes)

2019-06-23 10:23发布

我不知道如何使用事件处理程序,我想知道是否有人已经或可能直接我一些代码,演示了如何使用事件处理程序,将在关闭/关闭事件执行代码?

我知道这可能是因为这个做回答的问题:

WPF的形式接近运行代码

但我需要一些指导。

谢谢=)

Answer 1:

这只是这个XAML

<Window ... Closing="Window_Closing" Closed="Window_Closed">
    ...
</Window>

和两个密码ClosingClosed事件

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    ...
}

private void Window_Closed(object sender, EventArgs e)
{
    ....
}


Answer 2:

如果你想从代码做这一切的背后把这个在你的窗户cs文件

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            this.Closed += new EventHandler(MainWindow_Closed);
        }

        void MainWindow_Closed(object sender, EventArgs e)
        {
            //Put your close code here
        }
    }
}

如果你想在代码XAML和部分做部分落后为此在XAML

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525" Closed="MainWindow_Closed">
    <Grid>

    </Grid>
</Window>

而这的.cs

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        void MainWindow_Closed(object sender, EventArgs e)
        {
            //Put your close code here
        }
    }
}

上述实施例可以适用于任何形式的XAML应用程序。 你可以有多种形式。 如果你想申请代码为整个应用程序退出过程修改app.xaml.cs文件到本

namespace WpfApplication1
{
    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application
    {
        protected override void OnExit(ExitEventArgs e)
        {
            try
            {
                //Put your special code here
            }
            finally
            {
                base.OnExit(e);
            }
        }
    }
}


Answer 3:

您可以覆盖在这样App.Xaml.cs的功能的OnExit:

/// <summary>
/// Interaction logic for App.xaml
/// </summary>
public partial class App : Application
{
    protected override void OnExit(ExitEventArgs e)
    {
        //do your things
        base.OnExit(e);
    }
}


Answer 4:

约什 - 史密斯对MVVM文章有一个是工作区的一部分,如何在密切做的ViewModels的一个很好的例子。 这种架构可不仅仅是你的窗口扩大被关闭,但清理的ViewModels等。

约什-史密斯MVVM例子

在图7中,他描述你所谈到的情况。 希望这可以帮助!



Answer 5:

如果您正在使用C#在Microsoft Visual Studio中,以下为我工作。

在你Window.cs文件

using System;
using System.ComponentModel;
using System.Windows.Forms;

namespace Name_Space
{
    public partial class Window : Form
    {

        public Window()
        {
            InitializeComponent();
           //...
        }

        private void Window_Load(object sender, EventArgs e)
        {
          //...
        }

        private void Window_Closed(object sender, EventArgs e)
        {
            // Your code goes here...!
        }
    }
}

在您的Window.Designer.cs文件中加入这一行下面的方法

    ...
        private void InitializeComponent()
        {

            ...

            // 
            // Window
            // 
            ...

            this.Closed += new System.EventHandler(this.Window_Closed); // <-- add this line
         }

    ...


文章来源: Execute code when a WPF closes