[英]Disable Alt + F4 in 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;
}
但問題是,當我顯示一個對話框時,這不起作用。 表格仍然在Alt + 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);
除非我明確告知,否則如何防止新表格完全關閉?
從如何阻止用戶關閉我的C#應用程序? ,你可以這樣做:
protected override CreateParams CreateParams
{
get
{
const int CS_NOCLOSE = 0x200;
CreateParams cp = base.CreateParams;
cp.ClassStyle |= CS_NOCLOSE;
return cp;
}
}
無需在FormClosing事件中跟蹤鍵或取消關閉。 此外,角落中的關閉按鈕將被禁用,但您仍然可以使用this.Close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.