我想在按下按钮时关闭应用程序,但我想禁用关闭按钮(右上方的X按钮)。
我使用以下代码禁用了关闭按钮:
protected override void OnFormClosing(FormClosingEventArgs e)
{
e.Cancel = true;
}
但现在当我尝试使用此代码关闭程序时,它无法正常工作。
private void button1_Click(object sender, EventArgs e)
{
Application.Exit();
}
单击按钮时有没有办法关闭此程序?
答案 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
通过而不取消它。