我正在构建一个应用程序,当用户使用以下代码单击关闭按钮(右上角的十字)时,该应用程序最小化为托盘:
private void FrmTest_FormClosing(object sender, FormClosingEventArgs e) {
e.Cancel = true;
WindowState = FormWindowState.Minimized;
}
但是,如果我想使用Close()
实际关闭按钮上的窗口,则会调用此处理程序并且表单不会关闭。
如何立即关闭我的表单/应用程序?
答案 0 :(得分:0)
我修好了(以为我检查了这个,但显然,调试时出了点问题)。
您可以使用CloseReason
属性找出调用事件的原因。当用户点击窗口上的关闭按钮时,e.CloseReason
为UserClosing
,否则为ApplicationExitCall
:
private void FrmTest_FormClosing(object sender, FormClosingEventArgs e) {
if (e.CloseReason == CloseReason.UserClosing) {
e.Cancel = true;
WindowState = FormWindowState.Minimized;
}
}
使用Close()
关闭表单时, 更新,CloseReason
将是相同的,您应该在评论中提及Hans Passant提及的布尔值。使用Application.Exit()
时,此CloseReason
解决方案可以正常运行。