27

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

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

在 WPF 表单上运行代码关闭

但我需要一些方向。

谢谢你=)

4

4 回答 4

54

只是这个 XAML

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

ClosingClosed事件的代码

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

private void Window_Closed(object sender, EventArgs e)
{
    ....
}
于 2012-04-04T20:01:26.790 回答
27

如果您想从后面的代码中完成这一切,请将其放入您的 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
        }
    }
}

如果您想参与 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);
            }
        }
    }
}
于 2012-04-04T20:02:17.607 回答
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);
    }
}
于 2012-04-04T19:59:39.680 回答
-2

如果您在 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
         }

    ...
于 2018-09-13T23:14:43.967 回答