Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/34: Рейтинг темы: голосов - 34, средняя оценка - 5.00
darkmesser
0 / 0 / 1
Регистрация: 04.11.2013
Сообщений: 148
1

Как полностью закрыть приложение?

09.11.2014, 17:39. Просмотров 6548. Ответов 12
Метки нет (Все метки)

в программе есть две формы, одну из которых я скрываю(Hide()). если запускаю с .exe, то при закрытии прога висит в процессах. что я делаю не так?
как закрыть все формы?
C#
1
2
3
4
5
6
7
8
9
 private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            Application.Exit();
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            Application.Exit();
        }
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.11.2014, 17:39
Ответы с готовыми решениями:

Если приложение запущено, то показать MessageBox и закрыть приложение
Доброго времени. Плохо разбираюсь в с# и прощу помощи написать кусочек кода. Мысль такая "Если...

Закрыть полностью файл Excel
class CreateExcelDoc { Excel.Workbook workbook = null; Excel.Application app = null;...

Нужно скрыв главную форму, при закрытии второй, закрыть программу полностью
Как это сделать, помогите плиз... private void btNext_Click(object sender, EventArgs e) {...

закрыть приложение Word
как программно закрыть ворд приложение. Я с таким кодам закрываю, но закрывается толка документ:...

12
insite2012
Модератор
Эксперт .NET
5016 / 3935 / 1133
Регистрация: 12.10.2013
Сообщений: 11,467
Записей в блоге: 2
09.11.2014, 18:03 2
Попробуйте
C#
1
 this.Close();
В коде основной формы, естественно, чей метод Main() является точкой входа.
Кстати, такое написание кода как у вас запросто может привести к рекурсии))) Не думали об этом?
1
darkmesser
0 / 0 / 1
Регистрация: 04.11.2013
Сообщений: 148
09.11.2014, 18:37  [ТС] 3
insite2012,
оставил только это, но вылетает Необработанное исключение типа "System.StackOverflowException" в System.Windows.Forms.dll =)
C#
1
2
3
4
 private void Form1_FormClosed(object sender, FormClosedEventArgs e)
        {
            this.Close();
        }
0
insite2012
Модератор
Эксперт .NET
5016 / 3935 / 1133
Регистрация: 12.10.2013
Сообщений: 11,467
Записей в блоге: 2
09.11.2014, 18:40 4
Цитата Сообщение от darkmesser Посмотреть сообщение
вылетает Необработанное исключение типа "System.StackOverflowException"
Я вам выше об этом сказал. Вот скажите, ЗАЧЕМ в обработчик закрытия формы ставить оператор, который говорит форме закрыться??? Вы скажите, какая цель этого?
0
asql
75 / 76 / 40
Регистрация: 03.06.2014
Сообщений: 462
09.11.2014, 18:48 5
Цитата Сообщение от darkmesser Посмотреть сообщение
C#
1
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { this.Close(); }
это вы делаете в form2?

Добавлено через 13 секунд
Цитата Сообщение от darkmesser Посмотреть сообщение
C#
1
private void Form1_FormClosed(object sender, FormClosedEventArgs e) { this.Close(); }
это вы делаете в form2?
0
darkmesser
0 / 0 / 1
Регистрация: 04.11.2013
Сообщений: 148
09.11.2014, 19:16  [ТС] 6
asql, insite2012, мне нужно закрыть две формы, когда я закрываю вторую.
0
asql
75 / 76 / 40
Регистрация: 03.06.2014
Сообщений: 462
09.11.2014, 19:26 7
Цитата Сообщение от darkmesser Посмотреть сообщение
мне нужно закрыть две формы, когда я закрываю вторую.
вам нужно передать управление главной формы (form1 походу у вас) в form2, и когда вы закрываете form2 вы должны будете закрыть в Form2_FormClosed именно form1. посмотрите в нете как передать управление из form1 в form2...
0
insite2012
Модератор
Эксперт .NET
5016 / 3935 / 1133
Регистрация: 12.10.2013
Сообщений: 11,467
Записей в блоге: 2
09.11.2014, 19:38 8
Цитата Сообщение от darkmesser Посмотреть сообщение
мне нужно закрыть две формы, когда я закрываю вторую.
В форме 1 (из которой вызывается Форма 2) подпишитесь на событие FormClosing Формы 2 и в методе-обработчике напишите this.Close();
0
Denno
95 / 97 / 30
Регистрация: 21.10.2012
Сообщений: 319
Завершенные тесты: 3
09.11.2014, 21:11 9
Автор, я тебя понимаю. Ты запускаешь форму_1, потом открываешь форму_2 скрывая форму_1 и потом хочешь при закрытии формы_2 закрыть полностью программу, что бы она не висела процессах. В форме_2 подписываешься на событие FormClosed и вставляешь эту строку

C#
1
Application.Exit();
0
darkmesser
0 / 0 / 1
Регистрация: 04.11.2013
Сообщений: 148
09.11.2014, 21:41  [ТС] 10
Denno, да, Вы абсолютно правильно меня поняли. Только Ваш совет я уже пробовал, все равно висит в процессах, значить первая форма не закрыта.
0
Metall_Version
2131 / 1268 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
Завершенные тесты: 2
09.11.2014, 22:37 11
Цитата Сообщение от darkmesser Посмотреть сообщение
Denno, да, Вы абсолютно правильно меня поняли. Только Ваш совет я уже пробовал, все равно висит в процессах, значить первая форма не закрыта.
значит остается какой-то поток , мы же с многопоточностью работаете в программе?

Добавлено через 1 минуту
Цитата Сообщение от insite2012 Посмотреть сообщение
В форме 1 (из которой вызывается Форма 2) подпишитесь на событие FormClosing Формы 2 и в методе-обработчике напишите this.Close();
а смысл?

Цитата Сообщение от insite2012 Посмотреть сообщение
Я вам выше об этом сказал. Вот скажите, ЗАЧЕМ в обработчик закрытия формы ставить оператор, который говорит форме закрыться??? Вы скажите, какая цель этого?
как раз смысл большой , Application.Exit(); закрывает приложение , такой прием как раз делается когда у нас первая форма в хайде, а нужно закрыть приложение через вторую форму
0
insite2012
Модератор
Эксперт .NET
5016 / 3935 / 1133
Регистрация: 12.10.2013
Сообщений: 11,467
Записей в блоге: 2
09.11.2014, 23:01 12
Цитата Сообщение от Metall_Version Посмотреть сообщение
как раз смысл большой , Application.Exit(); закрывает приложение , такой прием как раз делается когда у нас первая форма в хайде, а нужно закрыть приложение через вторую форму
Metall_Version, как можно заметить, в том посте ни слова о том, что это за форма и какая она - основная или же нет.

Добавлено через 7 минут
Цитата Сообщение от darkmesser Посмотреть сообщение
все равно висит в процессах, значить первая форма не закрыта.
Вы проверяете запуская исполняемый файл из папки Debug (Release) или смотрите при запуске из среды? У имени процесса случаем нет приставки в имени типа бла-бла-бла.vshost.exe?
0
Metall_Version
2131 / 1268 / 516
Регистрация: 04.03.2014
Сообщений: 4,092
Завершенные тесты: 2
09.11.2014, 23:02 13
А форма не имеет значения, этот метод при вызове из любой формы закрывает текущий контекст - приложение.
Я всегда делал как ты процитировал, все работало.

Догадка - как я уже писал какой поток остается работать, нужно смотреть весь код
0
09.11.2014, 23:02
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2014, 23:02

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Закрыть приложение по таймеру
Доброго времени суток, уважаемые форумчане! Возникла проблема: как закрыть приложение (из дочерней...

Закрыть приложение через 5 секунд
Помогите пожалуйста, подскажите как с помощью таймера закрыть приложение автоматически через 5...

Создать приложение, которое нельзя закрыть
Здравствуйте! Пишу мелкое приложение, в котором устанавливается лимит времени использования ПК. По...

Закрытием второй формы закрыть все приложение
Всем доброго времени суток. Помогите пожалуйста, есть к примеру 2-е формы, как сделать так что бы...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.