0

我有一个新形式的这个事件:

private void CrawlLocaly_FormClosed(object sender, FormClosedEventArgs e)
        {

        }

我不确定是使用封闭式还是封闭式。原因是我想检查用户是否关闭了程序,例如仅通过从任务栏关闭应用程序。

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

我该怎么做 ?

4

3 回答 3

3
    Application.Exit();

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

于 2013-02-19T13:34:47.583 回答
0

使用此事件:

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

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

于 2013-02-19T13:39:39.560 回答
0

好吧,我也坚持这样的问题。在我的应用程序中,我有 2 个表单,#1 main,#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();
        }
    }
于 2014-02-14T11:51:08.123 回答