FormClosing取消事件时关闭表单

时间:2015-07-28 13:50:20

标签: windows winforms

我正在构建一个应用程序,当用户使用以下代码单击关闭按钮(右上角的十字)时,该应用程序最小化为托盘:

private void FrmTest_FormClosing(object sender, FormClosingEventArgs e) {
    e.Cancel = true;
    WindowState = FormWindowState.Minimized;
}

但是,如果我想使用Close()实际关闭按钮上的窗口,则会调用此处理程序并且表单不会关闭。

如何立即关闭我的表单/应用程序?

1 个答案:

答案 0 :(得分:0)

我修好了(以为我检查了这个,但显然,调试时出了点问题)。

您可以使用CloseReason属性找出调用事件的原因。当用户点击窗口上的关闭按钮时,e.CloseReasonUserClosing,否则为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解决方案可以正常运行。