Отключить ALT + F4, но разрешить закрытую форму Code, Breaure Code.UserClosing не помогает
-
27-09-2019 - |
Вопрос
Я хочу, чтобы форма не будет закрыта, делая Alt. + F4. но если Application.Exit()
или this.Close
называется из той же форме, его следует закрыть.
Я старался CloseReason.UserClosing
Но до сих пор не помогите.
Решение
Если вам нужно отфильтровывать Alt. + F4. Только событие (уходя нажав закрывающую коробку, this.Close()
а также Application.Exit()
вести себя как обычно), тогда я могу предложить следующее:
- Установить форму
KeyPreview
имуществоtrue
; Проводная форма
FormClosing
а такжеKeyDown
Мероприятия:private void Form1_FormClosing(object sender, FormClosingEventArgs e) { if (_altF4Pressed) { if (e.CloseReason == CloseReason.UserClosing) e.Cancel = true; _altF4Pressed = false; } } private bool _altF4Pressed; private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.Alt && e.KeyCode == Keys.F4) _altF4Pressed = true; }
Другие советы
Это очень легко сделать это по установлению SupperkeyPress. имущество в соответствии с Form_keydown. EventHandler, как показано ниже.
if (e.KeyCode == Keys.F4 && e.Alt)
{
e.SuppressKeyPress = true;
}
С этим вы также можете закрыть свою активную форму, установив свойство SuppresskeyPress в False на тот же EventHandller или любой другой путь.
Capture Alt + F4 Hotkey, настроив кнопку KeyPreview Form к True и переопределении метода OnProcessCMDKEY.
Как вы использовали добрую кожуцию?
Смотрите пример код здесь:http://msdn.microsoft.com/en-us/library/system.windows.forms.form.formclostion.aspx.
Вам необходимо установить свойство отмены пропущенного объекта FormClizeEventargs, чтобы остановить закрытие формы.