2016-06-10 5 views
1

У меня есть 2 формы, form1 это меню, с помощью кнопок start, settings, quit и form2 где программа будет работать.Использование ALT + F4, чтобы закрыть все формы

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

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

+1

Ну, вы можете использовать 'KeyDown' событие для обнаружения' Alt + F4'combination и действовать соответственно – Pikoh

ответ

1

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

private void Form2_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Alt && e.KeyCode == Keys.F4) 
     { 
      e.Handled = true; 
      //Close your app 
      Application.Exit(); 
     } 
    } 
+0

'Environment.Exit' должны использоваться в качестве последнего средства, как это принудительно и внезапно завершает программу немедленно. –

+0

@ LasseV.Karlsen вы правы. Я просто использовал метод OP, предлагаемый для закрытия приложения, и не думал об этом. – Pikoh

+0

Спасибо! И Лассе В. Карлсен, я знаю, что он делает, но когда кто-то нажимает ALT + F4, они действительно хотят закрыть приложение. Я правильно обрабатываю кнопку «Выход». – Drake

 Смежные вопросы

  • Нет связанных вопросов^_^