【问题标题】:WPF Handling Window taskbar closing eventWPF处理窗口任务栏关闭事件
【发布时间】:2015-05-08 07:45:52
【问题描述】:

我在 WPF 应用程序中遇到问题。当我从 Window 任务栏 (Close window) 关闭我的应用程序或按 Alt + F4 时,它永远不会命中 Application_exit 事件处理程序我的 App.xaml 文件。

<Application x:Class="WPFApplication.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"             
             Startup="Application_Startup" Exit="Application_Exit">

后面的代码

private void Application_Exit(object sender, ExitEventArgs e)
{
    Application.Current.Shutdown();
}

【问题讨论】:

  • 你的 XAML 没有 StartupUri 属性吗?
  • 为什么不使用this.Close()?它调用Application.Current.Shutdown()。此外,您可能需要在 Application.Current.Shutdown() 之后添加一个 return 声明,但我不记得是否有必要。
  • @AmatuerDev 不,我只是在 App.xaml 文件中使用启动。它后端调用登录表单。

标签: c# wpf


【解决方案1】:

你可能已经设置了

ShutdownMode="OnExplicitShutdown"

在您的 App.xaml 中(或在后面的代码中)。

因此,您需要在 MainWindow 的 Closed 事件上设置一个侦听器,该事件正在调用关闭方法。

或者你已经设置了

ShutdownMode="OnLastWindowClose"

那么你可能打开了一些窗口,除了 MainWindow。

【讨论】:

    【解决方案2】:

    您的事件处理程序当前关闭了您的应用:

    private void Application_Exit(object sender, ExitEventArgs e)
        {
    
        Application.Current.Shutdown();
    
        }
    

    但如果你想做某事,你应该在 `Application.Current.Shutdown();' 之前添加它 例如:

    `private void Application_Exit(object sender, ExitEventArgs e)
            {
            //Do something here, delete unused files etc...
            Application.Current.Shutdown();
    
            }
    

    【讨论】:

    • 感谢@Ivan Ling 的 cmets。我的问题是当我在我的应用程序中的任何位置按下 ALT + F4 键时,它会关闭该表单,但它没有点击此 Application_Exit 功能。当我从任务栏中按 Alt+F4 或关闭窗口时,我怎么可能会关闭我的应用程序。谢谢
    • Ivan Ling 的回答没有参考原问题。
    猜你喜欢
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多