Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.02.2011, 14:42   #1
belarusfight
 
Регистрация: 17.09.2010
Сообщений: 7
Стрелка Закрытие всех дочерних форм

Доброго всем времени суток. Столкнулся с такой проблемой:
MDI интерфейс. В родительской форме открываются дочерние.
Как при закрытии формы-родителя автоматически закрывать дочернии?

Бело предположение сделать так:

Код:
for (int i=0; i< this.MdiChildren.Count(); i++)
{
   MdiChildren[i].Close();
}
Одно окно он закрывает, но вот если окон несколько (допустим, 4-5) то он закрывает пару а потом кидает ошибку, что MdiChildren[i] лежит вне диапазона массива.
belarusfight вне форума Ответить с цитированием
Старый 26.02.2011, 14:55   #2
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

У тебя в некотором роде быдлокод (без обид):
1) используй foreach/in: http://msdn.microsoft.com/ru-ru/library/ttw7t8t6.aspx
2) используй не метод Count(), а свойство Count, это гораздо быстрее!

Но, как я понял, проблемы это не исправит. Ну так решение очевидно и следует отсюда
Цитата:
MdiChildren[i] лежит вне диапазона массива.
Код:
do {
    MdiChildren[0].Close();
} while (MdiChildren.Count > 0)
(я не знаю, как пишется do .. while в C#, я вообще сейчас впервые имею дело с этим языком, просто немного погуглил)
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Старый 26.02.2011, 15:01   #3
belarusfight
 
Регистрация: 17.09.2010
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Obey-Kun Посмотреть сообщение
У тебя в некотором роде быдлокод (без обид):
1) используй foreach/in: http://msdn.microsoft.com/ru-ru/library/ttw7t8t6.aspx
2) используй не метод Count(), а свойство Count, это гораздо быстрее!

Но, как я понял, проблемы это не исправит. Ну так решение очевидно и следует отсюда

Код:
do {
    MdiChildren[0].Close();
} while (MdiChildren.Count > 0)
(я не знаю, как пишется do .. while в C#, я вообще сейчас впервые имею дело с этим языком, просто немного погуглил)
Биг спс!
Всё пашет. Только у MdiChildren есть только метод Count().
А так всё ок.
Еще раз огромное спасибо!
belarusfight вне форума Ответить с цитированием
Старый 26.02.2011, 15:06   #4
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

Точно Count нету? Вот тут говорят, что есть — http://www.dotnetperls.com/count-array. Или MdiChildren это не List?

И это... вот так не прокатило что ли?
Код:
foreach (Form form in MdiChildren)
{
    form.Close();
}
(поправь, если напутал с синтаксисом)
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su

Последний раз редактировалось Obey-Kun; 26.02.2011 в 15:08.
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить классы всех дочерних окон формы rangel Работа с сетью в Delphi 8 12.10.2014 17:36
Закрытие всех документов без сохранения Окоча Юра Microsoft Office Word 7 30.11.2010 18:48
Много дочерних форм... L.A.M.E.R. Общие вопросы Delphi 4 03.08.2010 08:13
Скрытие и закрытие форм (Delphi) Middle.Cry Помощь студентам 2 13.03.2009 20:18
AlphaSkins. Как убрать скин с дочерних MDI Форм? chandrasecar Компоненты Delphi 4 11.02.2009 20:06