Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Закрытие родительского окна: событие FormClosing, вызывается не для всех дочерних окон... 
:(
    Опции темы
CyraxZ
Дата 27.8.2007, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Имеется иерархия окон: родительское W, дочернее W1, у дочернего ещё дочернее W2 и т.д.
Закрываю родительское окно W и наблюдаю за генерацией событий FormClosing (точка останова в обработчике FormClosing).
Событие FormClosing генерируется только для закрываемого окна W (CloseReason = UserClosing) и его непосредственного дочернего W1 (CloseReason = OwnerClosing). Для W2, W3 и т.д. не генерируется, тем не менее они тоже закрываются (каскадно - не каскадно, не знаю).
Если закрыть произвольное окно иерархии Wi, то событие FormClosing будет сгенерировано для W(i) и W(i+1) и всё...

В чём дело ?

Каждое дочернее окно я связываю с родительским через свойство Owner (если это имеет значение)...

Это сообщение отредактировал(а) CyraxZ - 27.8.2007, 11:48
PM MAIL   Вверх
Secret
Дата 27.8.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 14.8.2007

Репутация: нет
Всего: нет



Мне кажется что єто связано с тем как в C# происходит наследования.

То есть если есть объект А, от него вывести  объект В, а от В, в свою очередь С, то будем иметь такие соотношения иерархии:
  •  для пары А и В, базовым будет объект А;
  •  для пары В и С, базовым будет объект В.

З.Ы. это только мои предположения, потому если я не прав, то прошу меня поправить smile, и вотще мне кажется что это очень даже интересная особенность, которая заслуживает   пределения ей внимания ;)
 
PM MAIL   Вверх
CyraxZ
Дата 27.8.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Нет, кто-нибудь скажет, действительно описанная ситуация имеет место или это я что-то не так делаю ?
PM MAIL   Вверх
CyraxZ
Дата 28.8.2007, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Неужели все в отпуск ушли... В конце августа...
PM MAIL   Вверх
CyraxZ
Дата 5.9.2007, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



У кого-то крыша едет...
PM MAIL   Вверх
CyraxZ
Дата 10.9.2007, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Ну так нужно разобраться... Что за глюк ?
PM MAIL   Вверх
mr.DUDA
Дата 11.9.2007, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



А это как такое может быть, что 3 формы вложены в друг друга, они MDI-шные ? Может обычные события WinForms просто не заточены под сложные варианты и генерируются не во всех случаях.


--------------------
user posted image
PM MAIL WWW   Вверх
CyraxZ
Дата 11.9.2007, 22:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 251
Регистрация: 10.12.2006

Репутация: нет
Всего: нет



Цитата

3 формы вложены в друг друга, они MDI-шные ?

Нет, они отдельные (SDI). Только создание каждой последующей ("дочерней") формы происходит из текущей. Т.е. для 3 форм: в методах формы А создаётся и запускается самостоятельная форма B, в методах формы B создаётся и запускается самостоятельная форма C, и т.д. И естественно, при закрытии формы A предварительно каскадно закрываются сначала C, затем B и, наконец, А.
FormClosing в данном случае генерируется только для форм B и A (т.е. для формы, закрываемой пользователем, (А) и её непосредственной "дочерней" формы (B)).

Это сообщение отредактировал(а) CyraxZ - 11.9.2007, 22:13
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.1258 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.