| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > .NET для новичков > Формы в MDI |
| Автор: girovago 24.10.2007, 08:55 |
| У меня MDI-приложение с кучей различных документов. Надо сделать чтобы была возможность открыть только один экземпляр конкретного документа. Как узнать открыт ли в определенный момент экземпляр одной из форм? |
| Автор: snav 24.10.2007, 09:48 | ||
При создании новой формы полю m_form присваивается ссылка на созданную форму, при закрытии формы поле обнуляется. Если при создании формы m_form != null, значит такая форма уже существует. |
| Автор: tol05 24.10.2007, 10:47 |
| snav, MDI формы уже учитывают связи между родительским контейнером и его child и позволяют решать такие задачи без создания для ворм лишних ссылок-маркеров. Согласись, когда разработчики .Net претензиозно заявили "Мы позволяем создавать MDI-приложения", они ведь и какой-то код напедалили? С помощью свойства родительского контейнера ActiveMdiChild можно посмотреть какая из его дочерних форм сейчас активна. Проходом по массиву MdiChildren можно посмотреть, какие вообще сейчас формы открыты, ну и т.д. Вот недавно совсем был вопрос http://forum.vingrad.ru/forum/topic-178196/anchor-entry1293694/0.html Одним словом, почитайте мануал, подберете нужное. |
| Автор: snav 24.10.2007, 10:59 | ||
Пожалуй, так действительно проще... |
| Автор: thomas 23.1.2009, 21:08 | ||
| Привет всем. Для того чтобы не допустить создания повторных экземпляров дочерних окон воспользовался методом с http://www.codeproject.com/KB/architecture/singletonforms.aspx tol05,
к сожалению "не допедалили" В msdn в разделах о MDI нет ни малейшго намека о проверке на существование созданного дочернего окна перед созданием нового. Сколько не жми на кнопку, а каждый раз сождашь новое окошко, не смотря на то что оно вроде как уже и существует. |