Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 17.04.2021
Сообщений: 5

Закрытие формы

17.04.2021, 00:44. Показов 1372. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Столкнулся со следующей проблемой, у меня есть 2 формы, с основной вызывается вторая (основная скрывается с помощью this.Hide(), в этой второй нужно сделать выход из приложения по нажатию на Х в уголке окна.
Выход сделать смог следующим образом:
C#
1
2
3
4
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
      Application.Exit();
}
Но, у меня на второй форме есть кнопка "Вернуться на главную", и теперь програма полностью закрывается даже при нажатии этой кнопки.

Подскажите, пожалуйста, как пофиксить это?
Заранее большое спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.04.2021, 00:44
Ответы с готовыми решениями:

Как отловить закрытие формы по нажатию на крестик в правом верхнем углу формы
Обычный обработчик не катит: нужно закрыть форму в процессе работы программы

Разрешить закрытие формы при условии, что все другие формы закрыты
Нужно создать событие, при котором приложение не завершается, пока все формы не будут закрыты. private void frMain_FormClosing(object...

Открытие и закрытие формы из другой формы
помогите пожалуйста. из формы1 открывается форма2, а при закрытии формы2 должна открываться форма1, но не просто показаться Show(), а...

3
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
17.04.2021, 05:55
Лучший ответ Сообщение было отмечено CyberIgorka как решение

Решение

Ну если есть кнопка "Вернуться на главную", то вторая форма должна быть модельной. Т.е. вызываться с помощью ShowDialog. Значит, кнопке возврата нужно назначить DialogResult = Ok, а в главной проверять результат вызова ShowDialog. Если равен Ok, значит это возврат, если иначе - закрыть
1
0 / 0 / 0
Регистрация: 17.04.2021
Сообщений: 5
17.04.2021, 12:37  [ТС]
ViterAlex, спасибо за помощь, благодаря Вашему ответу смог добиться нужного результата.

В своем вопросе я немного не корректно выразился, так как у меня не кнопка "Вернуться на главную", а ToolStripMenuItem.
Опишу решение своей проблемы, вдруг кому-то понадобится.

В основной форме вызываю вторую:
C#
1
2
3
Form2 author = new Form2();
this.Hide();
author.ShowDialog();
При нажатии ToolStripMenuItem "Вернуться на главную":
C#
1
2
3
this.DialogResult = DialogResult.Yes;
this.Close();
f1.Show();
И в FormClosing написал следующее:
C#
1
2
3
4
5
private void Form2_FormClosing(object sender, FormClosingEventArgs e)
{
   if (this.DialogResult != DialogResult.Yes)
       Application.Exit();
}
0
 Аватар для ViterAlex
8952 / 4864 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
17.04.2021, 19:36
CyberIgorka, ты не до конца разобрался. Если у тебя Form2 вызывается из первой формы, то всё, что нужно сделать в Form2 это задать DialogResult и закрыть её. А уже первая форма в событии FormClosing обработает DialogResult и покажет себя, если нужно.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.04.2021, 19:36
Помогаю со студенческими работами здесь

Закрытие формы
Закрыть форму после заданного N ресайзов окна

Закрытие формы
Возникла проблема, с закрытием формы. Поставил удаление папки с файлами на Form1_FormClosing. Папка создается только по надобности....

Закрытие формы
Есть отрывок кода: private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogResult res =...

Закрытие формы
Здравствуйте, друзья. Застрял на следующем моменте: событие, связанное с непосредственным закрытием формы - уже задействовано, а вот как...

Закрытие формы
Моя программа состоит из нескольких взаимосвязанных форм, допустим, 1,2 и 3. Главной является форма 1. Если закрыть приложение крестиком в...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Программный отбор элементов справочника Номенклатура по группе 1С
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор под наименованию группы (на. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника Сотрудники по перечислениям 1С
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru