我在新表格中有这个事件:
private void CrawlLocaly_FormClosed(object sender, FormClosedEventArgs e)
{
}
我不确定是使用关闭还是关闭。 原因是我想检查用户是否关闭程序,例如只需从任务栏关闭应用程序。
如果他确实从任务栏鼠标右键单击然后关闭,那么我希望它关闭所有程序而不仅仅是此表单。
我该怎么做?
答案 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();
}
}