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

时间:2013-02-19 13:32:54

标签: c#

我在新表格中有这个事件:

private void CrawlLocaly_FormClosed(object sender, FormClosedEventArgs e)
        {

        }

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

如果他确实从任务栏鼠标右键单击然后关闭,那么我希望它关闭所有程序而不仅仅是此表单。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

    Application.Exit();

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

答案 1 :(得分:0)

使用此活动:

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

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

答案 2 :(得分:0)

我也坚持这样的问题。 在我的应用程序中,我有2个表单,#1 main,#2 - 用于设置 - 如果用户关闭它我想知道是否保存设置。此外,如果设置为null - 关闭应用程序不仅形式,如果用户单击按钮保存 - 我想关闭(隐藏)#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();
        }
    }
相关问题