在ShowDialog中禁用Alt + F4()
问题描述:
我已阅读了一些关于禁用的文章Alt + F4并且到目前为止,已将其部分运行。在ShowDialog中禁用Alt + F4()
目前,我有这个我的主要形式,而它的只允许当我把它需要被关闭的形式非常出色..
private void Alerter_FormClosing(object sender, FormClosingEventArgs e)
{
if (_altF4Pressed)
{
if (e.CloseReason == CloseReason.UserClosing)
e.Cancel = true;
_altF4Pressed = false;
}
}
private void Alerter_KeyDown(object sender, KeyEventArgs e)
{
if (e.Alt && e.KeyCode == Keys.F4)
_altF4Pressed = true;
}
的问题然而,就是这样做当我显示对话框时不起作用。 该表格仍然关闭替代 + F4,这是必不可少的,因为这给用户提供了一种避开过程和程序的方法。
目前,我的警报形式被称为使用;
public static DialogResult show(string param)
{
thisParam = param;
using (Alerter alert = new Alerter())
{
if (alert.ShowDialog() == DialogResult.OK) { return DialogResult.OK; }
else { return DialogResult.Cancel; }
}
}
和我的主窗体使用它调用它;
Alerter.show(rxLine);
如何防止新窗体被关闭?除非我明确告诉它?
答
从How can I prevent a user from closing my C# application?,你可以这样做:
protected override CreateParams CreateParams
{
get
{
const int CS_NOCLOSE = 0x200;
CreateParams cp = base.CreateParams;
cp.ClassStyle |= CS_NOCLOSE;
return cp;
}
}
无需跟踪键或取消该事件的FormClosing闭幕。此外,拐角处的关闭按钮将被禁用,但仍然可以使用this.Close();
关闭表格。为什么在地球上你会** ** EVER **想要这个? ALT + F4被用作最后的手段。 Whaat是你写的,是病毒吗? – 2013-05-03 22:30:45
必须同意@ofstream:几乎没有任何情况适用于您的用户。如果他们希望你的对话不受阻碍,他们会*以某种方式避开它。如果你给他们关闭的能力(以及“你确定吗?”对话框),那么他们会使用它。如果你*不*,那么他们会对你感到恼火,然后使用任务管理器来终止这个过程。 – dlev 2013-05-03 22:46:03
虽然我可以理解谨慎..不,我没有写病毒,实际上它远离它。我正在写一个升级到现有的定制应用程序,其目的是通知最终用户产品召回并强制确认通知。然后,签名人负责执行回收操作。我们还构建用户使用的计算机..并锁定不需要的访问,以防止诸如数据库的关键进程被篡改。 – 2013-05-04 00:04:23