关闭按钮时禁用关闭表单程序

时间:2016-01-06 17:25:05

标签: c# .net winforms

我想在按下按钮时关闭应用程序,但我想禁用关闭按钮(右上方的X按钮)。

我使用以下代码禁用了关闭按钮:

protected override void OnFormClosing(FormClosingEventArgs e)
{
    e.Cancel = true;
}

但现在当我尝试使用此代码关闭程序时,它无法正常工作。

private void button1_Click(object sender, EventArgs e)
{
    Application.Exit();
}

单击按钮时有没有办法关闭此程序?

3 个答案:

答案 0 :(得分:2)

在事件处理程序中,检查CloseReason property of the FormClosingEventArgs:

这允许您根据how the close was initiated采取不同的行为,因此在Application Exit(或Windows Shutdown)的情况下,您可以允许表单关闭。

protected override void OnFormClosing(FormClosingEventArgs e)
{
    if (e.CloseReason != CloseReason.ApplicationExitCall
     && e.CloseReason != CloseReason.WindowsShutDown)
     {
          e.Cancel = true;
     }
}

答案 1 :(得分:1)

你总是取消表格的封闭,这就是为什么它不起作用。

试试这个:

bool blockClosing = true;

protected override void OnFormClosing(FormClosingEventArgs e)
{
    e.Cancel = blockClosing;
}

private void button1_Click(object sender, EventArgs e)
{
    blockClosing = false;
    Application.Exit();
}

通过这种方式,当您按下按钮时,它将允许关闭。

答案 2 :(得分:-1)

FormClosingEventArgs有一个Reason成员,可以告诉您究竟要关闭表单的确切方法。只需允许ApplicationExitCall通过而不取消它。