Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/64: Рейтинг темы: голосов - 64, средняя оценка - 4.91
2 / 0 / 7
Регистрация: 12.05.2012
Сообщений: 173

Как перед запуском новой формы проверить открыта ли форма?

26.01.2018, 18:49. Показов 14040. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Как перед запуском формы проверить запущена ли она уже. Работаю с MDI контейнером.
Вот код на запуск формы, что мне нужно добавить для решения этой проблемы?
C#
1
2
3
                Form2 form2 = new Form2();
                form2.MdiParent = this;
                form2.Show();
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.01.2018, 18:49
Ответы с готовыми решениями:

Как сделать чтобы перед запуском формы играла музыка
Подскажите пожалуйста, как сделать чтобы при открытии какой либо формы сразу проигрывала музыка?

Перед запуском приложения, проверить .NET Framework
Доброе время суток. Как реализовать проверку наличия нужного фрэймворка (либо вообще его существования на машине) и выдать сообщение...

Чтобы перед запуском формы проверялось одно условие, а именно запущено приложение с параметром или без
нужно сделать так, чтобы перед запуском формы проверялось одно условие, а именно запущено приложение с параметром или без. Набросал...

3
62 / 63 / 28
Регистрация: 10.01.2018
Сообщений: 360
26.01.2018, 19:07
Про какое-нибудь isShowed не знаю. по идее это должно работать
C#
1
2
3
4
5
6
 if (form2 == null || form2.IsDisposed)
      {
       form2= new Form2();
       form2.MdiParent = this;
       form2.Show();
      }
но мне кажется лучше просто блокировать процедуру повторного вызова формы и разрушать наверняка , если важно чтоб она была в единственном экземпляре.
0
 Аватар для netBool
325 / 304 / 173
Регистрация: 16.11.2010
Сообщений: 1,069
Записей в блоге: 9
26.01.2018, 19:17
Лучший ответ Сообщение было отмечено Sanya Black1993 как решение

Решение

Sanya Black1993, в вашем случае, думаю, проще как-то так:
C#
1
2
3
4
            if (this.MdiChildren.Any()) return;
            Form form2 = new Form();
            form2.MdiParent = this;
            form2.Show();
Но если телепатия не сработала, то
C#
1
form2.Name = "mdi";
C#
1
if (!Application.OpenForms.Cast<Form>().Any(f => f.Name == "mdi")) {/*запуск окна*/ }
1
2 / 0 / 7
Регистрация: 12.05.2012
Сообщений: 173
26.01.2018, 19:31  [ТС]
netBool, благодарю вас. Всё отлично работает.
C#
1
2
3
4
 if (this.MdiChildren.Any()) return;
            Form form2 = new Form();
            form2.MdiParent = this;
            form2.Show();
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.01.2018, 19:31
Помогаю со студенческими работами здесь

Как проверить, открыта ли форма?
Как проверить, открыта ли форма?

Как проверить открыта или закрыта форма, открытая НЕ модально?
Здравствуйте. Есть две формы: Form1 (главная форма) и Form2 (открывается из первой НЕ модально). На Form1 нужно произвести...

Как узнать, с какой формы открыта форма, активная сейчас
есть 3 формы Form1, Form2, Form3 На этих формах есть кнопка Adotable1.Append; frmDob.Caption:='Добавление'; ...

Как узнать, с какой формы была открыта (Form*.ShowModal:) текущая форма
Доброго всем времени суток! Помогите, пожалуйста решить одну задачку: Проект для расчёта времени изготовления деталей (это так... для...

Проверить открыта ли форма
Мне нужно после нажатия одной кнопки проверить открыта ли форма и если да то закрыть если нет открыть, форма дочерняя. Как это реализовать?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru