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

Создание и открытие форм

10.10.2018, 22:52. Показов 2373. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! При работе с формами мне нужно,чтобы при нажатии на кнопку but1 из Form1,открывалась Form2, при этом при повторном нажатии на but1 (Form2 еще открыта) не создавался еще один экземпляр Form2, и к тому же чтобы я мог при этом работать с элементами Form1 (имею в виду когда открыта Form2)
Подскажите как это можно реализовать
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2018, 22:52
Ответы с готовыми решениями:

Открытие форм
Как ограничить открытие одной и той же формы одним экземпляром? Желательно сделать это со всеми формами в программе. Есть какие-то...

Открытие форм
Я из одной формы перехожу в другую, потом должен нажать кнопку и открыть третью При нажатии на кнопку, которая закрывает форму, эта форма...

Открытие/закрытие форм
Есть 2 формы, на первой форме есть кнопка, как сделать, чтобы при нажатии на кнопку открывалась форма 2 и закрывалась форма 1, именно...

7
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
10.10.2018, 23:21
Лучший ответ Сообщение было отмечено Malkin91 как решение

Решение

Malkin91, Можно такой вариант:
C#
1
2
3
4
5
6
bool frms = Application.OpenForms.Cast<Form>().Select(x => x.Name).Contains("Form2"); //Form2 имя вашей второй формы
if(!frms)
{
    Form frm2 = new Form2(); //Тут тоже имя вашей второй формы.
    frm2.Show();
}
Можно кнопку не активной делать.
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,082
Записей в блоге: 2
11.10.2018, 00:08
Цитата Сообщение от Malkin91 Посмотреть сообщение
Добрый день! При работе с формами мне нужно,чтобы при нажатии на кнопку but1 из Form1,открывалась Form2, при этом при повторном нажатии на but1 (Form2 еще открыта) не создавался еще один экземпляр Form2, и к тому же чтобы я мог при этом работать с элементами Form1 (имею в виду когда открыта Form2)
На уровне класса Form1 объявляете переменную Form2 form2=null;
При вызове используете следующую комбинацию
C#
1
2
if(form2==null) form2=new Form2();
form2.Show();
1
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
11.10.2018, 00:12
Элд Хасп, А если закрыть форму (form2) и попытаться открыть еще раз ?
1
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,082
Записей в блоге: 2
11.10.2018, 00:30
Цитата Сообщение от PoPsa85 Посмотреть сообщение
А если закрыть форму (form2) и попытаться открыть еще раз ?
В расчёте на то, что если ставится такое условие, то на закрытие окна будет запрет.
Но можно и так
C#
1
2
3
4
5
6
            try { form2.Show(); }
            catch
            {
                form2 = new Form2();
                form2.Show();
            }
1
0 / 0 / 0
Регистрация: 14.10.2017
Сообщений: 8
11.10.2018, 14:18  [ТС]
PoPsa85,большое спасибо!)
0
0 / 0 / 0
Регистрация: 14.10.2017
Сообщений: 8
16.10.2018, 07:31  [ТС]
PoPsa85, а как сделать так , что когда я открыл форму 2, потом нажал на форму 1, то есть фокус перевёл на форму 1, и при повторном нажатии на кнопку, которая открывает форму 2 (в данный момент форма 2 открыта), фокус перешёл с формы 1 на форму2?
0
Модератор
Эксперт .NET
 Аватар для Элд Хасп
16124 / 11248 / 2888
Регистрация: 21.04.2018
Сообщений: 33,082
Записей в блоге: 2
16.10.2018, 16:16
Цитата Сообщение от Malkin91 Посмотреть сообщение
PoPsa85, а как сделать так , что когда я открыл форму 2, потом нажал на форму 1, то есть фокус перевёл на форму 1, и при повторном нажатии на кнопку, которая открывает форму 2 (в данный момент форма 2 открыта), фокус перешёл с формы 1 на форму2?
Или так
C#
1
2
3
4
5
6
        Form2 form2 = null;
        private void button3_Click(object sender, EventArgs e)
        {
            if(form2==null) form2=new Form2();
            form2.Show(); form2.Activate();
        }
или так
C#
1
2
3
4
5
6
7
8
9
10
        Form2 form2 = null;
        private void button3_Click(object sender, EventArgs e)
        {
            try { form2.Show();  form2.Activate();}
            catch
            {
                form2 = new Form2();
                form2.Show(); form2.Activate();
            }
        }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
16.10.2018, 16:16
Помогаю со студенческими работами здесь

Открытие форм каскадно
Есть форма, на ней масса кнопок, при нажатии на кнопки открывается открывается другая форма, но с разными данными(заголовком и тд). Можно...

Открытие/Закрытие форм
Как сделать, чтобы новая форма открывалась точно на том месте, на котором СКРЫЛАСЬ старая?

Поочередное открытие форм
работаю с двумя формами. вначале запускается Form1, я скрываю ее и открываю в форме модального окна Form2. На второй форме есть checkbox и...

потоки + открытие форм
Доброго времени суток. помогите пожалуйста, как не ломал голову, не могу придумать решение. нужно открыть форму новую форму и...

Открытие форм с помощью ComboBox
Подскажите пожалуйста , нужно зделать чтоб элемент из combobox открывал свою Форму , допустим есть элементы 1 и 2 , как зделать чтоб...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru