#c# #button
#c# #кнопка
Вопрос:
Я работаю над созданием программы для управления файлами. У меня есть кнопка file в верхнем левом углу, а в выпадающем меню есть кнопка exit. Вот фрагмент кода:
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
Я перепробовал всевозможные команды для выхода из программы, но пока ничего не сработало. Кажется, это очень простой код, и я в точности следовал инструкциям с нескольких веб-сайтов. Если бы вы могли дать мне какие-либо идеи относительно того, почему у меня возникла эта проблема, я был бы очень признателен. Я использую Visual Studio Express 2013.
Комментарии:
1. Можете ли вы добавить свой код кнопки?
2. Вы просто скопировали вставленный код? Обработчик события должен быть зарегистрирован в элементе меню и кнопке. Самый простой способ зарегистрировать обработчик события click — это дважды щелкнуть по элементу меню или кнопке, а затем запустить приложение. Оператор Exit(); в сгенерированной функции.
Ответ №1:
Если это приложение WPF, то используйте
Application.Current.Shutdown();
Ответ №2:
Правильным методом было бы применение.Выход (). Это завершает все циклы обмена сообщениями и закрывает все окна, тем самым предоставляя вашим формам возможность выполнить их код очистки (в Form.OnClose
etc).
Environment.Exit
это просто остановило бы процесс. Если в какой-либо форме есть, например, несохраненные изменения, у нее не будет никаких шансов спросить пользователя, хочет ли он их сохранить. Также ресурсы (подключения к базе данных и т.д.) Не могли быть освобождены должным образом, файлы могли не быть сброшены и т.д.
если вы используете многопоточность, Application.Exit()
ваши потоки не будут завершены (и, таким образом, приложение будет продолжать работать в фоновом режиме, даже если графический интерфейс будет завершен). Поэтому вы должны принять меры для прекращения работы ваших потоков либо в основной функции (т.Е. Program.Main()
), либо в OnClose
событии вашей основной формы.
Ответ №3:
Вы можете определить, работает ли система.Windows.Формы.Приложение.Запуск был вызван путем проверки системы.Windows.Формы.Приложение.Свойство MessageLoop. Если true, то был вызван запуск, и вы можете предположить, что приложение WinForms выполняется следующим образом.
If (System.Windows.Forms.Application.MessageLoop)
{
// Use this since we are a WinForms app
System.Windows.Forms.Application.Exit()
}
Else
{
// Use this since we are a console app
System.Environment.Exit(1)
}
См.:http://geekswithblogs.net/mtreadwell/archive/2004/06/06/6123.aspx
или
Environment.Exit(0);