Я хочу это, форма не будет рядом с выполнением Высокого звука + F4, но если Application.Exit()
или this.Close
назван от той же Формы, она должна быть закрыта.
Я попробовал CloseReason.UserClosing
но все еще никакая справка.
Если вам нужно отфильтровать Alt + F4 только событие ( оставив щелчок по окну закрытия, this.Close ()
и Application.Exit ()
, чтобы вести себя как обычно), я могу предложить следующее:
KeyPreview
свойство для true
; Подключить события формы FormClosing
и KeyDown
:
private void Form1_FormClosing (объект-отправитель, FormClosingEventArgs e) { {1}} {
if (_altF4Pressed)
{
if (e.CloseReason == CloseReason.UserClosing)
e.Cancel = true; {{1 }} _altF4Pressed = false;
}
}
private bool _altF4Pressed;
private void Form1_KeyDown (объект-отправитель, KeyEventArgs e) {{1 }} {
if (e.Alt && e.KeyCode == Keys.F4)
_altF4Pressed = true;
}
Как вы использовали CloseReason?
См. Пример кода здесь: {{1} } http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclosing.aspx
Вам необходимо установить свойство Cancel переданного объекта FormClosingEventArgs, чтобы остановить форму закрытие.
Захватите горячую клавишу Alt + F4, установив для свойства KeyPreview формы значение true и переопределив метод OnProcessCmdKey.