如何关闭从另一个表单关闭我的应用程序

本文关键字:我的 应用程序 表单 何关闭 另一个 | 更新日期: 2023-09-27 18:00:18

我在一个新的窗体中有这个事件:

private void CrawlLocaly_FormClosed(object sender, FormClosedEventArgs e)
        {
        }

我不确定是用Closed还是Closing。原因是我想检查用户是否关闭了程序,例如从任务栏关闭应用程序。

如果他确实关闭了它从任务栏鼠标右键点击然后关闭,然后我希望它关闭所有的程序,而不仅仅是这个窗体。

我该怎么做?

如何关闭从另一个表单关闭我的应用程序

    Application.Exit();

将关闭您的应用程序。我真的不确定你是否能通过鼠标右键菜单检测到他是否关闭了它。据我所知,您只能在FormClosedEventArgs中看到提供的原因。FormClosing将为您提供相同的理由。

使用此事件:

private void Form_FormClosing(object sender, FormClosingEventArgs e)
{
    if(e.CloseReason == CloseReason.UserClosing)
    {
         //close forms
         Application.Exit();
    }
}

无法检查用户是否通过单击"X"或通过TaskBar或任何其他方式关闭了您的表单,因为CloseReason的结果将始终是CloseReason.UserClosing

好吧,我也坚持这样的问题。在我的应用程序中,我有两个表单,#1主,#2-用于设置-如果用户关闭它,我想知道是否保存设置。此外,如果设置为空-关闭应用程序不仅仅是表单,如果用户点击按钮保存-我想关闭(隐藏)#2表单。那么我的解决方案在哪里?如果点击按钮保存,我们将标记值设置为1,这样我们就知道"谁"试图关闭表单:预定义:

btnSave.Tag = 0;

保存按钮点击事件:

btnSave.Tag = 1;
this.Hide();

它将触发onclose事件:

private void frmLogin_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (btnSave.Tag.ToString() == "0")
        {
            DialogResult dlg = MessageBox.Show("Do you want to exit without finished setup connection?", "Form", MessageBoxButtons.YesNo, MessageBoxIcon.Information);
            if (dlg == DialogResult.No)
            {
                e.Cancel = true;
            }
            else
            {
                e.Cancel = false;
                this.Dispose();
                Application.Exit();
            }
        }
        else 
        {
            this.Hide();
        }
    }