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

Как закрыть родительскую форму при закрытии дочерней?

05.12.2015, 19:41. Показов 8543. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, друзья. Очередная проблема возникла. Есть основная форма, из неё вызывается форма для входа (логин/пароль). Как можно поймать её закрытие на крестик или любое иное завершение её работы без нажатия кнопки входа и завершить основную форму, при завершении дочерней?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.12.2015, 19:41
Ответы с готовыми решениями:

Как с пом@щью дочерней формы открыть форму у родительскую форму?
Привет Всем! :) Вот я использую код KvartiraForm KvartiraForm = new KvartiraForm(); KvartiraForm.MdiParent =...

Делать неактивной родительскую форму при появлянии дочерней.
Собственно как запретить менять что-либо на главной форме, пока активна дочерняя форма, как это сделано в месседжбоксе - пока он открыт...

Как дать ссылку на родительскую форму дочерней
Есть код: using System; using System.Windows.Forms; using System.IO; namespace Metamorphosius_Launcher { public partial...

12
78 / 77 / 52
Регистрация: 11.06.2015
Сообщений: 189
05.12.2015, 19:58
У каждой формы есть события FormClosing - это событие вызывается при закрытии формы. FormClosed - событие вызывается когда форма уже закрылась. В случае с FormClosing в аргументах есть возможность отменить закрытие формы. Прчем все эти события реагируют не только на закрытие форм на крестик, но и любые другие способы закрытия
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
05.12.2015, 20:06
MaxBudkov,
как вариант, можно назначить кнопке DialogResult = OK и при закрытии формы проверять:
C#
1
2
3
4
5
private void Form2_FormClosed(object sender, FormClosedEventArgs e)
{
    if (this.DialogResult != DialogResult.OK)
        Application.Exit();
}
1
0 / 0 / 1
Регистрация: 02.06.2015
Сообщений: 25
05.12.2015, 20:11  [ТС]
Да-да, я знаю, что есть такое событие. Но что я там напишу? Закрыть надо не только эту форму, но и форму-родителя. Как это сделать? И думаю, я не могу использовать DialogResult хотя бы потому, что я просто закрою форму входа и всё
0
78 / 77 / 52
Регистрация: 11.06.2015
Сообщений: 189
05.12.2015, 20:12
В форме логина должно быть поле, которое хранить ссылку на основную форму. И если вы ее закрываете, то вызвать метод .Close() у этой формы
0
0 / 0 / 1
Регистрация: 02.06.2015
Сообщений: 25
05.12.2015, 20:15  [ТС]
Как это сделать? Можно пример ссылки? Экземпляр имеется в виду? Я не выпаду в рекурсию, ибо форма входа будет запускаться постоянно?
0
78 / 77 / 52
Регистрация: 11.06.2015
Сообщений: 189
05.12.2015, 20:16
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
class LoginForm:Form
{
    MainForm f;
    public LoginForm(MainForm f)
    {
         this.f = f;
    }
}
 
class MainForm : Form
{
     void SomeMethod()
     {
          (new LoginForm(this)).Show();
     }
}
Накидал прямо здесь
0
0 / 0 / 1
Регистрация: 02.06.2015
Сообщений: 25
05.12.2015, 20:19  [ТС]
И всё таки, я не выпаду в рекурсию? Просто форма входа запускается на старте формы-родителя
0
78 / 77 / 52
Регистрация: 11.06.2015
Сообщений: 189
05.12.2015, 20:20
А почему рекурсия? Вызов идет один раз.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
05.12.2015, 20:21
Цитата Сообщение от MaxBudkov Посмотреть сообщение
Закрыть надо не только эту форму, но и форму-родителя. Как это сделать? И думаю, я не могу использовать DialogResult хотя бы потому, что я просто закрою форму входа и всё
добавлю комментарии к коду:
C#
1
2
3
4
5
private void Form2_FormClosed(object sender, FormClosedEventArgs e) //обработка закрытия формы входа
{
    if (this.DialogResult != DialogResult.OK) //если была нажата кнопка входа, то DialogResult формы станет  равным OK, иначе он будет не определен и выполнится следующая строка
        Application.Exit(); //программа закрывается со всеми формами вместе
}
0
0 / 0 / 1
Регистрация: 02.06.2015
Сообщений: 25
05.12.2015, 22:56  [ТС]
Тааааак. Хорошо. Всем спасибо, пойду думать о смысле жизни. Ещё раз спасибо, форумчане!

Добавлено через 2 часа 30 минут
Не работает, кстати, только дорвался до "компуктера". В любом случае приложение закрывается, то есть выполняется условие
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
05.12.2015, 23:05
Цитата Сообщение от MaxBudkov Посмотреть сообщение
В любом случае приложение закрывается, то есть выполняется условие
может стоит
Цитата Сообщение от Даценд Посмотреть сообщение
назначить кнопке DialogResult = OK
0
0 / 0 / 1
Регистрация: 02.06.2015
Сообщений: 25
05.12.2015, 23:59  [ТС]
Это было достаточно очевидно, признаю свою тупость. Можете подсказать ещё, как сделать нормальный таймер? Желательно с примером, а то хоть убей не могу нормальный таймер сделать. Мне надо сделать задержку в 5 секунд перед ходом алгоритма после нажатия кнопки

Добавлено через 34 минуты
Всё, сам разобрался уже. Спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.12.2015, 23:59
Помогаю со студенческими работами здесь

Обновить родительскую форму из дочерней
Привет. На 1-ой форме показываю модальное окно 2-ой формы. На 2-ой форме проделываю нужные мне манипуляции, в следствии чего, у...

Обновить родительскую форму из дочерней
всем привет! у меня есть главная форма на которой отображается грид с пользователями, с этой формы я вызываю другую форму методом...

Передача данных из дочерней в родительскую форму
Доброго времени суток! В общем, нужно написать подобие fontdialoga, пока что только для выбора шрифтов,не могу передать состояние...

Сделать невозможность переключения с дочерней на родительскую форму
открывается child форма однако без проблем можно переключить фокус обратно на родительскую. как сделать чтобы пока child не закрыта- ...

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


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru