3

我需要以同样的方式关闭我的应用程序,无论是直接关闭还是从任务栏或任务管理器关闭。我需要做一些预先设置并在每次关闭应用程序之前自动生成日志文件......

例如,每次退出时我都会给我的应用程序表单提供以下效果,但是当我从任务栏或任务管理器关闭我的应用程序时不会显示此效果......

    System.Windows.Forms.Timer closeTimer = new System.Windows.Forms.Timer();

    void lblClose_Click(object sender, System.EventArgs e)
    {
        closeTimer.Tick += new EventHandler(closeTimer_Tick);
        closeTimer.Interval = 10;
        closeTimer.Start();            
    }

    void closeTimer_Tick(object sender, EventArgs e)
    {
        int a = (int)(this.Opacity * 100);
        a--;
        this.Opacity = ((double)a / 100);
        if ((this.Opacity*100) == 0)
            this.Close();
    }
4

3 回答 3

5

这个问题

[STAThread]
static void Main()
{
    Application.EnableVisualStyles();
    Application.SetCompatibleTextRenderingDefault(false);
    Application.ApplicationExit += new EventHandler(Application_ApplicationExit);
    AppDomain.CurrentDomain.ProcessExit += new EventHandler(CurrentDomain_ProcessExit);
    Application.Run(new MainForm());
}

这比使用FormClosedas 更可取,因为表单正在关闭并不一定意味着应用程序是(当然特定于您的代码)。

于 2012-11-13T13:29:48.677 回答
4

我假设您的应用是 System.Windows.Forms.Application。如果是这样,您可以收听 ApplicationExit 事件。

所以在 Main 中,执行以下操作:

Application.ApplicationExit += (s,e) =>
{
   // Your exit code.
};

请参阅http://msdn.microsoft.com/en-us/library/system.windows.forms.application.applicationexit.aspx

于 2012-11-13T13:26:36.520 回答
0

你需要处理FormClosing事件。更多信息在这里:http: //msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx

于 2012-11-13T13:28:01.100 回答