Windows forms вызов формы

Windows forms вызов формы

БлогNot. Visual C++: из формы в форму

Visual C++: из формы в форму

Несмотря на то, что моё мнение о микрософтовском Visual Studio по-прежнему остаётся невысоким, иногда приходится что-то делать и на нём. Если смириться с тем, что пишем мы при этом, собственно, не на C++, а на так называемом C++/CLI, работа с привычными визуальными компонентами будет не так уж сильно отличаться от тех же Борландовских сред. А вот взаимодействие форм и модулей способно, по сравнению с Builder’ом, создать проблемы. Рассмотрим 3 типовых ситуации работы с приложением, содержащим больше одной формы. Среда примера — бесплатная Visual C++ 2010 Express, предполагается, что главная форма имеет имя по умолчанию Form1 .

Пример конструирования и программного вызова формы

Этот код можно выполнить, например, по нажатию кнопки в главной форме Form1.

Для добавления обработчика нажатия программно сгенерированной кнопки button2 достаточно перед последней строкой кода написать:

— до того, как будет вызван метод form2->ShowDialog() или form2->Show();

При этом код обработчика размещён в текущем модуле Form1.h :

Вызвать другую форму из главной формы

В меню выберем Проект — Добавить новый элемент — Форма — имя Form2

перед первым namespace в Form1.h (то есть, в самое начало файла).

Включим указатель на экземпляр класса в секцию public класса Form1 :

Добавим код там, где нужно создать и вызвать вторую форму:

Для программного удаления второй формы подойдёт код

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

Опишем нужные данные в классе формы Form1 (здесь имя и namespace проекта Tabulator , если нужно, замените на своё):

Потом инициализируем данные по событию Load главной формы:

Затем реализуем код для создания очередной формы

Если мы хотим создавать дочерние формы не отдельно, а внутри родительской формы, то в свойствах Form1 нужно указать, что она «предок» (установить свойство IsMdiParent = true ), а перед показом дочерней формы оператором F2[FormCount-1]->Show() пометить её как потомка Form1:

Вызвать из дочерней формы метод родительской формы

Нам едва ли обойтись без привлечения файлов .cpp, что неплохо — писать код в файлах .h правильного Си’шника вообще ломает 🙂

Распишем процесс по шагам.

1) Имеются 2 формы — Form1 и Form2 , на Form1 располагаются Button ( button1 , будет открывать вторую форму) и Label ( label1 , здесь будем менять текст). На Form2 — button1 , по нажатию на которую будет происходить смена текста в label1 .

2) Так как нам из первой формы нужно иметь доступ ко второй, а из второй к первой, то будет возникать проблема перекрестных ссылок (когда Form1.h ссылается на Form2.h , который, в свою очередь, опять ссылается на Form1.h ). Для того, чтобы этого избежать, код первой формы ( Form1 ), который будет иметь доступ ко второй форме ( Form2 ), мы вынесем из .h-файла в .cpp файл. Таким образом нужно создать файл Form1.cpp .

Читайте также:  Главный элемент операционной системы windows многоэкранный режим

3) Объявить открытый метод Set в Form1.h для того, чтобы можно было изменить текст label1 (код можно написать в конце файла, после #pragma endregion ):

4) В файле Form2.h подключаем Form1.h (в начале):

и создаем конструктор, который будет принимать и сохранять ссылку на первую форму для дальнейшего использования: //ниже сразу ниже можно прописать ссылку: private: Form1^ parentForm;

5) По клику кнопки в Form2 будем вызывать метод Set родительской формы:

6) Осталось в первой форме сделать открытие второй формы. Для этого из Form1.h обработчик нажатия кнопки переносим в Form1.cpp , а в .h-файле оставляем только его объявление.

Код в файле Form1.cpp :

В Form1.h вставляем только строку:

На этом все. Можно скомпилировать и проверить проект, архив во вложении:

Пример ChildToParent, проект Visual Studio 2010 в архиве .zip (40 Кб)

Наладить взаимодействие двух форм

На самом деле, просто развитие идеи. Здесь первая форма умеет передавать данные в текстовое поле второй и наоборот. Теперь они друг друга не «прячут», так что можно создать и много экземпляров второй формы.

Простой пример «многооконного редактора» есть в этой заметке блога.

Пример TwoFormsSample, проект Visual Studio 2010 в архиве .zip (36 Кб)

07.01.2014, 00:05; рейтинг: 44729

Работа с формами

Основы форм

Внешний вид приложения является нам преимущественно через формы. Формы являются основными строительными блоками. Они предоставляют контейнер для различных элементов управления. А механизм событий позволяет элементам формы отзываться на ввод пользователя, и, таким образом, взаимодействовать с пользователем.

При открытии проекта в Visual Studio в графическом редакторе мы можем увидеть визуальную часть формы — ту часть, которую мы видим после запуска приложения и куда мы переносим элементы с панели управления. Но на самом деле форма скрывает мощный функционал, состоящий из методов, свойств, событий и прочее. Рассмотрим основные свойства форм.

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

Несмотря на то, что мы видим только форму, но стартовой точкой входа в графическое приложение является класс Program, расположенный в файле Program.cs:

Сначала программой запускается данный класс, затем с помощью выражения Application.Run(new Form1()) он запускает форму Form1. Если вдруг мы захотим изменить стартовую форму в приложении на какую-нибудь другую, то нам надо изменить в этом выражении Form1 на соответствующий класс формы.

Сама форма сложна по содержанию. Она делится на ряд компонентов. Так, в структуре проекта есть файл Form1.Designer.cs, который выглядит примерно так:

Здесь объявляется частичный класс формы Form1, которая имеет два метода: Dispose() , который выполняет роль деструктора объекта, и InitializeComponent() , который устанавливает начальные значения свойств формы.

При добавлении элементов управления, например, кнопок, их описание также добавляется в этот файл.

Но на практике мы редко будем сталкиваться с этим классом, так как они выполняет в основном дизайнерские функции — установка свойств объектов, установка переменных.

Еще один файл — Form1.resx — хранит ресурсы формы. Как правило, ресурсы используются для создания однообразных форм сразу для нескольких языковых культур.

И более важный файл — Form1.cs, который в структуре проекта называется просто Form1, содержит код или программную логику формы:

Читайте также:  Usb хаб windows 10

Как вызвать из одной формы другую

не получается вызвать вторую форму (form2) из первой формы (form1)
Есть форма 1 (form1)
Создал вторую форму (form2).
Привинтил к ней большую кнопку, чтобы та отличалась от первой формы (form1)

на нажатие кнопки на form1 повесил такой код:

В итоге ошибка.
form1 не знает о существовании form2.

Что я сделал не правильно?

Как передать масив из одной формы в другую
У меня есть две формы. В первой есть масив с 10-ми значениями, и мне нужно передать етот масив в.

Как передать данные с одной формы на другую?
как из textBox1 с form1 предать текст в textBox1 на form2?

Как передать dataGridView из одной формы в другую
Необходимо передать dataGridView из одной формы в другую. Каким образом это сделать?

Как передать список из одной формы в другую?
Здравствуйте! Мне нужно передать список туристов из Form1 в Form2 , чтобы поля этого списка стали.

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

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

Как передать массив из одной формы в другую
есть одна форма, у нее в коде присутствует и заполняется (считаются значения функции)double Uu =.

Как с одной формы на другую значения передавать?
Давайте темам осмысленные названия! У меня имеются 2 формы,на одной комбобоксы и кнопка поиск,на.

Как передавать значения из одной формы в другую?
Всем привет. Запутался, помогите. Как передавать значение счётчика во вторую форму (не через.

BestProg

Пример создания и вызова новой формы приложения в C#

Содержание

Поиск на других ресурсах:

Условие задания

Разработать демонстрационное приложение, осуществляющее вызов из главной формы второстепенной формы по схеме, изображенной на рис. 1. Приложение реализует взаимодействие между различными формами, которыми могут быть диалоговые окна любой сложности.

В главной форме Form1 разместить:

  • элемент управления типа Label для вывода результата возврата из второстепенной формы;
  • элемент управления типа Button для вызова второстепенной формы.

Во второстепенной форме Form2 разместить:

  • элемент управления типа Label для вывода заголовка формы;
  • два элемента управления типа Button для обеспечения подтверждения или неподтверждения выбора (действия) во второстепенной форме.

Рис. 1. Схема взаимодействия между формами

Выполнение

1. Создать приложение типа Windows Forms Application

Запустить Microsoft Visual Studio 2010 . Пример создания нового приложения типа Windows Forms Application подробно описывается здесь.

Сохранить проект в произвольной папке.

После создания приложения у нас есть одна форма. Программный код формы размещен в файле « Form1.cs » (рис. 2).

Рис. 2. Главная форма приложения Form1

2. Разработка главной формы приложения

Из палитры элементов управления Toolbox выносим на форму:

  • элемент управления типа Button ;
  • элемент управления типа Label .

Автоматически создаются два объекта-переменные с именами button1 и label1 .
В элементе управления типа Button свойство Text установить в значение « Show Form 2 «.
В элементе управления типа Label свойство Text установить в значение « Result = «.
После внесенных изменений главная форма Form1 приложения будет иметь вид как показано на рисунке 3.

Рис. 3. Главная форма приложения после внесенных изменений

Читайте также:  Mac os big sur ярлыки

3. Создание второстепенной формы

Для создания второстепенной формы в C# можно воспользоваться несколькими способами.

Способ 1.
Для добавления формы №2 в проект этим способом нужно вызвать команду (рис. 4)

Рис. 4. Команда « Add Windows Form… » для добавления новой формы в проект

В результате откроется окно « Add New Item — Windows Forms Application1 «. В этом окне выбираем элемент « Windows Form » (рис. 5). Оставляем имя формы как « Form2.cs «.

Рис. 5. Окно добавления новой формы к проекту

После нажатия на кнопке « Add » новая форма будет добавлена к проекту (рис. 6).

Рис. 6. Новосозданная форма Form2 и файл « Form2.cs «

Способ 2.

Также новую форму можно добавить к проекту с помощью соответствующей команды из контекстного меню (рис. 7).
Последовательность действий следующая:

  • в Solution Explorer сделать клик правой кнопкой «мышки» на названии приложения WindowsFormsApplication1 ;
  • выбрать подменю Add ;
  • в подменю Add выбрать команду « Windows Form… «.

Рис. 7. Добавление новой формы из Solution Explorer

В результате откроется точно такое же окно как на рисунке 5.

4. Разработка второстепенной формы

Следующим шагом есть разработка второстепенной формы. Используя средства панели инструментов Toolbox создаем второстепенную форму Form2 как показано на рисунке 8. Такое построение формы соответствует условию задачи. Таким же образом, на Form2 имеем элементы управления label1 , butto1 , button2 .

Рис. 8. Второстепенная форма Form2

5. Программирование событий клика на кнопках OK и Cancel формы Form2

Программируем событие клика на кнопке OK . Подробный пример программирования события клика на кнопке OK описывается здесь.

В программный код обработчика события button1_Click() (кнопка « OK «) вписываем следующую строку:

это значит, что результат возврата из формы Form2 есть « OK «.
Точно так же в обработчике события button2_Click вписываем:

это значит выбор кнопки « Cancel » ( button2 ).

После внесенных изменений листинг программного кода файла « Form2.c s» будет иметь следующий вид:

Переход к программному коду формы Form2 (файл « Form2.cs «) можно осуществить с помощью Solution Explorer . Для этого в Solution Explorer вызываем контекстное меню для формы Form2 и из этого меню выбираем команду « View Code » (рис. 9).

Рис. 9. Команда « View Code » для перехода в режим программного кода

6. Вызов формы Form2 из главной формы приложения

Согласно с условием задачи, для вызова Form2 из Form1 нужно запрограммировать событие клика на кнопке « Show Form 2 «.

Программный код обработчика события будет иметь следующий вид:

В листинге, приведенном выше, сначала создается экземпляр класса типа Form2 . В операторе условного перехода if осуществляется вызов диалогового окна формы Form2 с помощью строки

Функция ShowDialog() выводит окно формы и держит его открытым до тех пор, пока пользователь не сделает какой-либо выбор. После выбора пользователем той или иной команды, окно закрывается с кодом возврата. Происходит проверка кода возврата с известными константами класса DialogResult . После проверки выводится сообщение о действии, выбранном пользователем в Form2 (элемент управления label2 ).

Листинг всего программного кода формы Form1 следующий

7. Выполнение приложения

После выполненных действий можно выполнять приложение и исследовать его работу.

Оцените статью