Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 35
1

Как сделать так, чтобы по нажатию кнопки открывалась только одна форма?

23.09.2018, 15:06. Показов 3638. Ответов 3
Метки нет (Все метки)

Ситуация такова, что есть 20 различных элементов toolStripMenuItem, по нажатию каждого из которых открывается своя форма со своим событием. И проблема в том, что если я нажму N раз на, например, кнопку toolStripMenuItem5, то у меня откроется N одинаковых форм. Возможно ли как-то обработать событие, чтобы если у меня уже открыта форма, то ее дубликат не создавался при нажатии кнопки?
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.09.2018, 15:06
Ответы с готовыми решениями:

Как сделать, чтобы одна форма приложения открывалась поверх абсолютно всех других?
Подскажите как сделать окно браузера(справка программы, поверх всех окон(форм приложения),...

Как сделать, чтобы при нажатии кнопки на форме открывалась другая форма?
Всем привет! Хочу, чтобы при нажатии кнопки на форме (Form1) открывалась другая, уже...

Как сделать так, чтобы одна из страниц в меню сайта не открывалась, то есть ссылка на нее бы не работала
Подскажите пожалуйста, можно ли сделать так, чтобы одна из страниц в меню сайта не открывалась, то...

Как сделать так, чтобы при нажатии на кнопку открывалась другая форма? (я новичок)
В справочнике КонтактнаяИнформация я создала две формы элемента. На первую форму добавила кнопку....

3
Администратор
Эксперт .NET
13974 / 11334 / 4593
Регистрация: 17.03.2014
Сообщений: 22,917
Записей в блоге: 1
23.09.2018, 16:30 2
Лучший ответ Сообщение было отмечено Марк Северин как решение

Решение

Марк Северин, можно проверять существование формы в коллекции открытых форм
C#
1
2
3
4
5
6
7
8
9
10
OtherForm form = Application.OpenForms.OfType<OtherForm>().SingleOrDefault();
if (form == null)
{
    form = new OtherForm(...);
    form.Show();
}
else
{
    form.Focus();
}
1
1 / 1 / 0
Регистрация: 17.12.2013
Сообщений: 35
23.09.2018, 19:06  [ТС] 3
OwenGlendower, вероятно, глупый вопрос, но можете объяснить для данного кода "на пальцах", как это будет происходить?
Вместо ... имя своей формы ставить и в обработчик кнопки закидывать, а далее при нажатии кнопки программа будет проверять, открыта ли уже эта форма?

просто программирование лежит вне моей настоящей/будущей профессиональной деятельности и все постигается исключительно в личных интересах, но не всегда и не все понятно.
0
Администратор
Эксперт .NET
13974 / 11334 / 4593
Регистрация: 17.03.2014
Сообщений: 22,917
Записей в блоге: 1
23.09.2018, 19:15 4
Марк Северин, имя класса своей формы нужно ставить вместо OtherForm. Код устроен прямолинейно - проверяет есть ли форма в списке открытых. Если нет, то создается новая и показывается. Иначе уже созданной форме передается фокус.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.09.2018, 19:15

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

Как сделать так, чтобы при двойном клике по записи в DBgrid открывалась новая форма
как сделать чтобы при двойном клике по записи в DBgrid открывалась новая форма где будет более...

как в access 2010 сделать так чтобы созданная кнопочная форма открывалась автоматически при запуске БД
как в access 2010 сделать так чтобы созданная кнопочная форма открывалась автоматически при запуске...

Сделать так, чтобы форма открывалась всегда в правом ВЕРХНЕМ углу
Добрый день. Как сделать так что бы при открытии формы она открывалась всегда в правом ВЕРХНЕМ...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru