![]() |
Модераторы: gambit, Partizan |
![]() ![]() ![]() |
|
WinNet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 4.3.2007 Где: г.Москва Репутация: нет Всего: нет |
Подскажите пожалуйста какое событие генерируется в главной форме (MDI контейнере) при закрытии
дочернего окна? |
|||
|
||||
-Mikle- |
|
|||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 8 Всего: 59 |
Насколько я знаю, вроде никакого (наверное).
Нужно при добавлении MDIChild'ов вешать на событие FormClosing и\или FormClosed один какой-то обработчик. -------------------- Если тебе плюют в спину, значит ты впереди... |
|||
|
||||
WinNet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 4.3.2007 Где: г.Москва Репутация: нет Всего: нет |
Значит есть только MDIShildActivate , а событие при закрытии порожденных окон отсутствует (или не имеет смысла быть).
Например: после закрытия дочернего окна должен сработать метод , как грамотно обработать это событие? Можно примерчик... ![]() |
|||
|
||||
-Mikle- |
|
||||
![]() Невидимка Vingrad'а ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 1672 Регистрация: 22.6.2003 Где: Казахстан, Астана Репутация: 8 Всего: 59 |
Добавлено @ 22:22
А зачем оно в принципе? Если следовать такой логике, то надо тогда продублировать все события Формы, но только называться они будут с префиксом MDI. А MDIСhildActivate имеет бОльший смысл, чем другие события. -------------------- Если тебе плюют в спину, значит ты впереди... |
||||
|
|||||
WinNet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 4.3.2007 Где: г.Москва Репутация: нет Всего: нет |
Уф... никак не получается!
![]() Алгоритм такой: в главной программе при нажатит на кнопка_1 создается дочерняя форма , при нажатии на кнопка_2 в дочерней форме появляется 2-рая дочерняя форма а первая дочерняя закрывается , при нажатии кнопка_3 во 2-й дочерней форме происходит ее закрытие . И тогда главная форма должна обработать это закрытие то есть выполнить определенные действия. Пожалуйста объесните по подробней что где писать? (Работаю с книгой Троелсена но там об этом ни слова) |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: 1 Всего: 1 |
А если использовать WinAPI функцию FindWindow()?
Вообще, насколько я знаю, с закрытием формы-родителя закрывается и все дочерние объекты данной формы... Может я вопрос не правильно понял, но звучит это примерно так, что вы хотите создавать форму №1, в ней форму №2 и форму № после этого хотите закрыть... Тогда перед закрытием может стоит поменять парента у той формы, чьего родителя хотите закрыть? --------------------
Даешь открытые исходники! |
|||
|
||||
ivashkanet |
|
|||
![]() Кодю потиху ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3684 Регистрация: 23.2.2006 Где: Гомель, Беларусь Репутация: 11 Всего: 149 |
WinNet, вгрызайся зубами в код -Mikle- и пытайся в нем разобраться. Его идея самая, ИМХО, лучшая. Единственное что бы я изменил, это вместо AttachAsMDIChild() использовать событие MDIСhildActivate.
|
|||
|
||||
WinNet |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 4.3.2007 Где: г.Москва Репутация: нет Всего: нет |
Ок... в коде разобрался , работает. Но только если создается 1-на дочерняя форма.
Как быть если из 1-й дочерней формы создается еще одна (первая закрывается:Close) и только после закрытия 2-й в родительской форме должно произойти событие? ![]() |
|||
|
||||
XavierElf |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 200 Регистрация: 24.1.2007 Где: г. Тверь Репутация: 1 Всего: 1 |
Хммм... Ну попробуй во второю дочернюю форму передавать ссылку на главную форму, в главной форме добавь свойство, к примеру
которое определяет существует ли ещё твоя дочерняя форма или нет и запиши в какой-нибудь обработчик проверку свойства, потом в первом дочернем когда создаёшь второе выставляй свойство IsSecondChildExists в true, а во второй дочерней форме в обработчике закрытия меняй у основной формы свойство IsSecondChildExists в false. З.Ы. private bool? _isSecondChildExists = null; - это специальный тип bool, который может принимать значение null. Используем его для того, чтобы твоё событие не наступило раньше времени ![]() --------------------
Даешь открытые исходники! |
|||
|
||||
WinNet |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 56 Регистрация: 4.3.2007 Где: г.Москва Репутация: нет Всего: нет |
Что то все равно не очень получается...
Вот создал 1-ю дочернюю форму как посоветовал -Mikle- . Затем в этой дочеоней форме я создаю 2-ю вот так
Может я здесь что то напутал? Так как при закрвтии 2-й дочерней формы(NextForm), событие
не наступает! |
||||
|
|||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Разработка Windows Forms | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |