Использование ALT+F4 для закрытия всех форм

У меня есть 2 формы, form1 это меню, с кнопками start, settings, quit и form2 где будет запускаться программа.

Проблема, с которой я сталкиваюсь, заключается в том, что если пользователь использует Alt+F4 для form2, он закрывает form2, но form1 работает в фоновом режиме. Я знаю, что могу использовать событие form2 Closing, поэтому оно может запускать Environment.Exit(0), но это событие закрытия также "активируется", если я использую кнопку form2 "Вернуться в меню", которая закрывает form2. Я также пытался просто скрыть form2 с помощью кнопки «Меню», но затем, когда мне нужно вызвать другой form2, он открывает новый экземпляр.

Итак, резюмируя: ALT+F4 должен закрыть все приложение, а не только текущую форму, но не может использовать form2 Closing событие, потому что я хочу закрыть form2 некоторые по другому тоже.


person Drake    schedule 10.06.2016    source источник
comment
Что ж, вы можете использовать событие KeyDown для обнаружения комбинации Alt+F4 и действовать соответственно.   -  person Pikoh    schedule 10.06.2016


Ответы (1)


Для этого вы можете использовать KeyDownevent. По сути, вы ловите эту комбинацию клавиш, сообщаете системе, что собираетесь ее обработать, чтобы она не передавалась ей, и, наконец, закрываете приложение. Чтобы закрыть его, всегда лучше использовать Application.Exit() вместо Environment.Exit. Вы можете понять, почему здесь, например:

    private void Form2_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Alt && e.KeyCode == Keys.F4)
        {
            e.Handled = true;
            //Close your app
            Application.Exit();
        }
    }
person Pikoh    schedule 10.06.2016
comment
Environment.Exit следует использовать в крайнем случае, так как он принудительно и внезапно завершает программу немедленно. - person Lasse V. Karlsen; 10.06.2016
comment
@LasseV.Karlsen, ты прав. Я просто использовал метод, предложенный OP, чтобы закрыть приложение, и не думал об этом. - person Pikoh; 10.06.2016
comment
Спасибо! И Лассе В. Карлсен, я знаю, что он делает, но когда кто-то нажимает ALT+F4, он действительно хочет закрыть приложение. Я правильно обращаюсь с кнопкой «Выход». - person Drake; 10.06.2016