这不是 How to Disable Alt + F4 closing form? 的副本。请阅读为什么。
我在我的主表单下制作了一个自定义的 MessageBox。
并将“Aight”按钮单击监听器设置为:
private void Aight_buton_Click(object sender, EventArgs e)
{
dr = DialogResult.OK;
Close();
}
“X”按钮的情况也是如此。按照上述问题的答案,我可以这样做:
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
e.Cancel = e.CloseReason == CloseReason.UserClosing;
}
但由于我在
Close()
下使用 Aight_buton_Click
它仍然注册为 e.CloseReason == CloseReason.UserClosing;
。因此,按该键不会关闭我的表单(自定义消息框),也不会关闭 Alt+F4。我想知道我如何具体地只防止 Alt+F4 关闭而不是 Close()
关闭。请我宁愿不使用 ModifierKeys
因为它不是处理这种情况的最合适也不是最聪明的方法。 最佳答案
自己处理 Atl+F4
并将其设置为已处理。
在表单构造函数中先设置
this.KeyPreview = true;
然后处理keyDown事件
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.F4)
{
e.Handled = true;
}
}
关于c# - 如何使用 alt + F4 防止任何表单关闭,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50456000/