Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
 Аватар для danyasworld
10 / 9 / 2
Регистрация: 12.04.2015
Сообщений: 238
Записей в блоге: 2

Почему обработчик события формы 2 отрабатывает и на первой?

08.11.2015, 02:01. Показов 1955. Ответов 21
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть 2 формы - main и bd_master. форма bd_master открывается из main вот так:
C#
1
2
3
 bd_master Bd_master = new bd_master();
 Bd_master.Owner = this;
 Bd_master.ShowDialog();
в форме bd_master обрабатывается событие form_closing с открытием messageBox
C#
1
2
3
4
5
private void bd_master_FormClosing(object sender, FormClosingEventArgs e)
        {
            var rez = MessageBox.Show( "Вы точно хотите покинуть мастер настройки баз данных? Все не сохраненные данные будут утеряны", "Внимание", MessageBoxButtons.YesNo, MessageBoxIcon.Warning,MessageBoxDefaultButton.Button2);
            e.Cancel = rez == DialogResult.No;
        }
на форме bd_master все работает отлично, окно всплывает на нажатие нет закритие отменяется. Форма main имеет свой обработчик этого события
C#
1
2
3
4
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            MessageBox.Show(this,"сеанс завершен", "завершене", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }
но каким то образом на форме main сначала всплывает окно bd_master(при этом если нажать нет форма не закрывается!!!) и только после этого окно самой формы main. Я так понял это не зависит от свойства owner и show просто или showdialog. В чем же проблема???
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.11.2015, 02:01
Ответы с готовыми решениями:

Почему когда я вешаю обработчик события на ячейку и этот обработчик срабатывает, то оказывается, он сработал совершенно для ДРУГОЙ ячейки?
Да, почему? Скропаем DataGridView; кинем на форму listBox2 и listBox1 и напишем такой обработчик для события EditingControlShowing...

Почему когда изменяется значение ячейки DataGridView, то не вызывается обработчик события CellValueChanged?
Всё предельно просто. Скропаем таблицу dataGridView1 из двух столбцов. Первый стоблбец пусть будет обыкновеный (DataGridViewTextBoxColumn),...

Перемещение первой формы на экране при выполнении события на второй
Привет, перечитал кучу форумов, но так и не понял как реализовать (я новичок в С#). При запуске проекта одновременно запускаются две...

21
 Аватар для Павлик Морозов
138 / 137 / 42
Регистрация: 26.10.2012
Сообщений: 443
09.11.2015, 19:28
Студворк — интернет-сервис помощи студентам
EvilFromHell, danyasworld, теперь немного эмпирических данных. Действительно ошибка возникает, хотя форма не отображена, НО, в классе Form есть readonly свойство OwnedForms, представляющее собой массив всех форм, принадлежащих текущей. Хоть bd_master и не показана, но в массиве у MainForm ссылка на нее остается. В итоге и получаем описанную выше проблему. Так что есть несколько вариантов решения: либо не присваивать bd_master свойство Owner, либо вызывать Dispose после уничтожения, либо вызывать метод удаления подчиненной формы:
C#
1
2
3
4
    bd_master Bd_master = new bd_master();
    Bd_master.Owner = this;
    Bd_master.ShowDialog();
    this.RemoveOwnedForm(Bd_master);
P.S. Обязательно вообще заморачиваться на свойство Owner? У вас же модальный диалог. Мне кажется это абсолютно лишнее действие...
0
 Аватар для danyasworld
10 / 9 / 2
Регистрация: 12.04.2015
Сообщений: 238
Записей в блоге: 2
09.11.2015, 20:28  [ТС]
Павлик Морозов, ну программа создавлась постепенно, ивначале я еще не знал как будет потом. форма была создана с упором на передачу данных из формы владельца в дочернюю форму (код найден в теме 7 частых вопросов по вин формс или как-то так), но потом передача данных ушла в отдельный класс, а свойство owner осталось. Ктож знал что так выйдет?) Зато теперь разобрался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.11.2015, 20:28

Создайте обработчик события изменение размера формы (Resize), который будет устанавливать все кнопки в активный режим
Разместите на форме ряд кнопок (Button). Создайте обработчики события нажатия на данные кнопки, которые будут делать неактивными текущую ...

Как в одном обработчике события запустить другой обработчик события
Есть список listView1, который заполняется из массива PeopleListprivate void listView1_RetrieveVirtualItem(object sender,...

Почему может не работать обработчик события?
Подскажите пожалуйста, почему в моем коде не срабатывает обработчик? LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam,...

Прикрепить обработчик события для элементов, созданных после загрузки формы
Я, возможно, заблуждаюсь в употреблении таких слов как "рантайм", но все же... Имеется listbox ... В нем я выбираю кол-во...

Как в VBA-коде установить обработчик события для подчинённой формы?
Привет, друзья! Конкретно меня интересует событие BeforeUpdate для подчинённой формы (Subform). Форма из себя представляет...


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

Или воспользуйтесь поиском по форуму:
22
Ответ Создать тему
Новые блоги и статьи
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru