Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
 Аватар для dzjundzja88
289 / 234 / 32
Регистрация: 09.02.2011
Сообщений: 435
.NET 3.x

Отловить закрытие формы

01.04.2011, 11:02. Показов 2792. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет, всем!
Что-то скучно на форуме Задам вопрос:
Есть форма1 с кнопкой, по нажатию на которую открывается вторая форма newCertificateForm
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
        private void add_Certificate_Click(object sender, EventArgs e)
        {
            TCertificate Cert = new TCertificate();
            try
            {
                newCertificateForm a = new newCertificateForm(Cert, 0);
                a.ShowDialog();
                CertColl.list.Add(Cert);
            }
            catch
            {
                MessageBox.Show("Ошибка при попытке добавить новый сертификат!","Ошибка!",MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
            }
        }
Как отловить на форме1 событие закрытия второй формы? Диалог ризалт не пойдёт. Вторая форма может быть закрыта любым способом(Нажатие на крестик, Alt+F4)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2011, 11:02
Ответы с готовыми решениями:

Отловить закрытие приложения в любой точке(классе, методе) программы
Доброго дня. Моя программа выполняет какие-то действия, и, предположим, в какой-то момент она словила необрабатываемое исключение, или...

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

Закрытие формы
Ребят, почему у меня не срабатывает данный код: private void frmMain_FormClosing(object sender, FormClosingEventArgs e) { ...

7
гроза ленивых студентов
 Аватар для znake
456 / 411 / 51
Регистрация: 27.03.2011
Сообщений: 823
01.04.2011, 11:26
я так и не понял, у тебя есть решение и ты хочешь посмотреть, смогут ли остальные решить или ты сам не можешь решить, но хочешь?

в общем у меня есть вариант, который задачку решает, но очень некрасиво...

создаешь на первой форме какую-нить невидимую кнопку (button8 у меня) и в дизайнере первой формы меняешь:
C#
1
2
3
private System.Windows.Forms.Button button8;
//на
public System.Windows.Forms.Button button8;
в первой форме при вызове второй форме добавляешь Owner:
C#
1
2
3
4
5
6
private void button2_Click(object sender, EventArgs e)
{
Form2 a = new Form2();
a.Owner = this;
a.ShowDialog();
a.Owner = null;//чтобы потом не помешала
во второй форме на событие FormClosing добавляешь нажатие кнопки первой формы
C#
1
2
3
4
 private void button8_Click(object sender, EventArgs e)
{
if (this.HasChildren) MessageBox.Show("closing");
}
1
146 / 130 / 27
Регистрация: 20.12.2010
Сообщений: 242
01.04.2011, 11:31
создаешь на первой форме какую-нить невидимую кнопку (button8 у меня) и в дизайнере первой формы меняешь:
может проще функцию добавить в первую форму?
C#
1
2
3
4
public void onCloseForm2()
{
   MessageBox.Show("Forma 2 is close!");
}
а во второй форме обработчик закрытия:
C#
1
2
3
4
private void newCertificateForm_FormClosed(object sender, FormClosedEventArgs e)
{
    (Owner as Form1).onCloseForm2();
}
и не надо добавлять невидимых элементов интерфейса

И согласен, вариант некрасивый.
1
181 / 107 / 13
Регистрация: 22.03.2010
Сообщений: 456
01.04.2011, 11:35
Цитата Сообщение от d3nver Посмотреть сообщение
может проще функцию добавить в первую форму?
C#
1
2
3
4
public void onCloseForm2()
{
   MessageBox.Show("Forma 2 is close!");
}
а во второй форме обработчик закрытия:
C#
1
2
3
4
private void newCertificateForm_FormClosed(object sender, FormClosedEventArgs e)
{
    (Owner as Form1).onCloseForm2();
}
и не надо добавлять невидимых элементов интерфейса

И согласен, вариант некрасивый.
В этой ситуации MessageBox появляется до полного закрытия Form2 (Form2 видна на экране).
Проще передавать параметр Form1 при инициализации Form2, а затем использовать его для сообщения Form1, что Form2 закрыта.
1
5 / 3 / 1
Регистрация: 30.03.2011
Сообщений: 8
01.04.2011, 11:39
Вот попробуй этим методом.Project.rar
0
146 / 130 / 27
Регистрация: 20.12.2010
Сообщений: 242
01.04.2011, 11:47
кстати вот еще вариант, получше немного:
C#
1
2
3
4
newCertificateForm a = new newCertificateForm();
a.FormClosed += new FormClosedEventHandler(onCloseForm2);
a.ShowDialog();
a.FormClosed -= new FormClosedEventHandler(onCloseForm2);
2
 Аватар для dzjundzja88
289 / 234 / 32
Регистрация: 09.02.2011
Сообщений: 435
01.04.2011, 14:48  [ТС]
znake, я не знал как её решить

Sham0, такой простой вариант, а я и не догадался.

Всем спасибо, увидел много полезного!

Добавлено через 1 час 13 минут
d3nver,
Цитата Сообщение от d3nver Посмотреть сообщение
a.FormClosed -= new FormClosedEventHandler(onCloseForm2);
Этим ты удаляешь событие? Зачем писать эту строчку?
0
 Аватар для nuke4303
99 / 100 / 16
Регистрация: 30.03.2011
Сообщений: 350
01.04.2011, 15:50
Цитата Сообщение от dzjundzja88 Посмотреть сообщение
Этим ты удаляешь событие? Зачем писать эту строчку?
Удаление события
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.04.2011, 15:50
Помогаю со студенческими работами здесь

Запретить закрытие формы
Как запретить закрытие формы(не MessageBox), просто форма, т.е сделать занчок x - закрытие формы невидимым? Т.е. форма появляется, что-то...

Запретить закрытие формы пользователю
Здравствуйте. У меня есть вопрос: я не могу запретить закрытие формы пользователю. Я пишу: private void Form1_FormClosing(object...

Отловить двойное нажатие клавиши вне формы
Есть программа в трее, есть глобальный хук, который, при нажатии на клавишу, разворачивает ее. Хук может отловить нажатие одной клавиши...

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

Как прервать закрытие формы?
Что прописать в обработчике на закрытие формы, чтобы она не закрылась?


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа разработанного в конфигурации КА2. В качестве источника данных указан регистр накопления, в который записываются данные о. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru