在WPF关闭时执行代码

在WPF关闭时执行代码,wpf,event-handling,execute,Wpf,Event Handling,Execute,我不熟悉使用事件处理程序,我想知道是否有人已经或可以指导我使用一些代码来演示如何使用将在关闭/关闭事件上执行代码的事件处理程序 我知道这是可以做到的,因为我回答了这个问题: 但我需要一些指导 谢谢=)您可以像这样覆盖App.Xaml.cs中的OnExit函数: /// <summary> /// Interaction logic for App.xaml /// </summary> public partial class App : Application {

我不熟悉使用事件处理程序,我想知道是否有人已经或可以指导我使用一些代码来演示如何使用将在关闭/关闭事件上执行代码的事件处理程序

我知道这是可以做到的,因为我回答了这个问题:

但我需要一些指导


谢谢=)

您可以像这样覆盖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);
    }
}
//
///App.xaml的交互逻辑
/// 
公共部分类应用程序:应用程序
{
受保护的覆盖void OnExit(ExitEventArgs e)
{
//做事
基数:OnExit(e);
}
}
就是这个XAML

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

如果您想从代码隐藏中完成这一切,请将其放在windows.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
        }
    }
}
命名空间WpfApplication1
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
this.Closed+=新事件处理程序(MainWindow\u Closed);
}
无效主窗口关闭(对象发送方,事件参数)
{
//把你的密码放在这里
}
}
}
如果您想在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
        }
    }
}
命名空间WpfApplication1
{
/// 
///MainWindow.xaml的交互逻辑
/// 
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
}
无效主窗口关闭(对象发送方,事件参数)
{
//把你的密码放在这里
}
}
}
以上示例适用于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);
            }
        }
    }
}
命名空间WpfApplication1
{
/// 
///App.xaml的交互逻辑
/// 
公共部分类应用程序:应用程序
{
受保护的覆盖void OnExit(ExitEventArgs e)
{
尝试
{
//把你的特殊代码放在这里
}
最后
{
基数:OnExit(e);
}
}
}
}
如果您在Microsoft Visual Studio上使用C#,以下内容对我很有用

在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
         }

    ...
。。。
私有void InitializeComponent()
{
...
// 
//窗口
// 
...

this.Closed+=new System.EventHandler(this.Window_Closed);//查看此处并使用
OnExit
而不是
onstart
。“OnExit()”方法没有出现在intellisense中,我知道我有正确的using语句,因为MSDN说它在System.Windows命名空间中。有什么想法吗?确切地说,我需要什么。@Stylzs05:这是一个老问题,但对于那些来到这里的人来说:intellisense正在发挥作用,如果你编写
受保护的覆盖
来声明该方法。这是对于Windows窗体来说,问题是关于WPF的。
    ...
        private void InitializeComponent()
        {

            ...

            // 
            // Window
            // 
            ...

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

    ...