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

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

08.11.2015, 02:01. Показов 1802. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
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),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru