Как создать вторую форму в windows forms

Добавление форм. Взаимодействие между формами

Последнее обновление: 31.10.2015

Чтобы добавить еще одну форму в проект, нажмем на имя проекта в окне Solution Explorer (Обозреватель решений) правой кнопкой мыши и выберем
Add(Добавить)->Windows Form…

добавление новой формы

Дадим новой форме какое-нибудь имя, например, Form2.cs:

создание новой формы

Итак, у нас в проект была добавлена вторая форма. Теперь попробуем осуществить взаимодействие между двумя формами. Допустим, первая форма
по нажатию на кнопку будет вызывать вторую форму. Во-первых, добавим на первую форму Form1 кнопку и двойным щелчком по кнопке перейдем в файл кода. Итак,
мы попадем в обработчик события нажатия кнопки, который создается по умолчанию после двойного щелчка по кнопке:

private void button1_Click(object sender, EventArgs e)
{

}

Теперь добавим в него код вызова второй формы. У нас вторая форма называется Form2, поэтому сначала мы создаем объект данного класса, а потом для его
отображения на экране вызываем метод Show:

private void button1_Click(object sender, EventArgs e)
{
	Form2 newForm = new Form2();
	newForm.Show();
}

Теперь сделаем наоборот — чтобы вторая форма воздействовала на первую. Пока вторая форма не знает о существовании первой. Чтобы это исправить, надо
второй форме как-то передать сведения о первой форме. Для этого воспользуемся передачей ссылки на форму в конструкторе.

Итак перейдем ко второй форме и перейдем к ее коду — нажмем правой кнопкой мыши на форму и выберем View Code (Просмотр кода). Пока он пустой и
содержит только конструктор. Поскольку C# поддерживает перегрузку методов, то мы можем создать несколько методов и конструкторов с разными
параметрами и в зависимости от ситуации вызывать один из них. Итак, изменим файл кода второй формы на следующий:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace HelloApp
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public Form2(Form1 f)
        {
            InitializeComponent();
            f.BackColor = Color.Yellow;
        }
    }
}

Фактически мы только добавили здесь новый конструктор public Form2(Form1 f), в котором мы получаем первую форму и устанавливаем ее фон
в желтый цвет. Теперь перейдем к коду первой формы, где мы вызывали вторую форму и изменим его на следующий:

private void button1_Click(object sender, EventArgs e)
{
	Form2 newForm = new Form2(this);
	newForm.Show();
}

Поскольку в данном случае ключевое слово this представляет ссылку на текущий объект — объект Form1, то при создании второй формы она будет получать ее (ссылку)
и через нее управлять первой формой.

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

Мы можем также создавать объекты и текущей формы:

private void button1_Click(object sender, EventArgs e)
{
	Form1 newForm1 = new Form1();
	newForm1.Show();
		
	Form2 newForm2 = new Form2(newForm1);
	newForm2.Show();
}

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


Содержание

  • Условие задания
  • Выполнение
    • 1. Создать приложение типа Windows Forms Application
    • 2. Разработка главной формы приложения
    • 3. Создание второстепенной формы
    • 4. Разработка второстепенной формы
    • 5. Программирование событий клика на кнопках OK и Cancel формы Form2
    • 6. Вызов формы Form2 из главной формы приложения
    • 7. Выполнение приложения
  • Связанные темы

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

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

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

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

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

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

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

C# Схема взаимодействия между формами

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

 


Выполнение

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

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

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

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

C# Windows Forms Главная форма

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

 

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

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

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

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

C# Windows Forms форма

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

 

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

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

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

Project -> Add Windows Form...

C# Windows Forms команда "Add Windows Form..."

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

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

Windows Form C# добавление новой формы

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

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

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

Способ 2.

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

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

C# Windows Forms новая форма Solution Explorer

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

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

 

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

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

C# Windows Forms Второстепенная форма Form2

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

 

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

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

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

this.DialogResult = DialogResult.OK;

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

this.DialogResult = DialogResult.Cancel;

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



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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
  public partial class Form2 : Form
  {
    public Form2()
    {
      InitializeComponent();
    }
    private void button1_Click(object sender, EventArgs e)
    {
      this.DialogResult = DialogResult.OK;
    }

    private void button2_Click(object sender, EventArgs e)
    {
      this.DialogResult = DialogResult.Cancel;
    }
  }
}

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

Visual Studio C# Команда "View Code"

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

 

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

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

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

...
private void button1_Click(object sender, EventArgs e)
{
    Form2 f = new Form2(); // создаем объект типа Form2

    if (f.ShowDialog() == DialogResult.OK) // вызов диалогового окна формы Form2
    {
        label1.Text = "Result = OK!"; 
    }
    else
    {
         label1.Text = "Result = Cancel!";
    }
}
...

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

f.ShowDialog();

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

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

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            Form2 f = new Form2();
            if (f.ShowDialog() == DialogResult.OK)
            {
                label1.Text = "Result = OK!";
            }
            else
            {
                label1.Text = "Result = Cancel!";
            }
        }
    }
}

 

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

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


Связанные темы

  • Delphi. Создание новой формы и подключение ее к главной форме программы
  • C++ Builder. Пример создания и вызова новой формы из главной формы приложения
  • Пример создания и вызова диалогового окна в MS Visual Studio 2010 — C++ (MFC)


2 / 2 / 0

Регистрация: 25.10.2010

Сообщений: 23

1

Как создать две формы?

16.01.2011, 00:23. Показов 23322. Ответов 7


Студворк — интернет-сервис помощи студентам

как создать две формы ?

Добавлено через 57 секунд
как создать две формы в Windows Forms ?



1



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

16.01.2011, 00:23

7

93 / 93 / 19

Регистрация: 25.12.2010

Сообщений: 316

16.01.2011, 00:33

2

Тебе нужно что бы по событию на первой форме выскакивала вторая?
Добавить вторую форму просто — Project-Add New Item и вибираеш форму или сразу Project-Add Windows Form…



2



2 / 2 / 0

Регистрация: 25.10.2010

Сообщений: 23

16.01.2011, 00:44

 [ТС]

3

Мне нужно показать преподу как создать 2-ю форму и как сделать чтоб она выскакивала по щелчку на первую



0



Neser

93 / 93 / 19

Регистрация: 25.12.2010

Сообщений: 316

16.01.2011, 00:47

4

Создаеш вторую форму как я написал выше.
Потом на 1 форму добавь кнопку. Кляцни 2 раза по кнопке. Откроеться редактор текста в событии Button1_Click.
Пишеш там где открылось код:

C#
1
2
Form2 f2=new Form2();
f2.Show();

Вот так.



3



outoftime

║XLR8║

1212 / 909 / 270

Регистрация: 25.07.2009

Сообщений: 4,361

Записей в блоге: 5

16.01.2011, 01:21

5

Neser, лучше бы сделать еще один шрих:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class FormChild : Form {}
 
class FormParent : Form {
 
// создаем форму как переменную
var formChild = new FormChild();
 
// в методе
    if (!this.formChild.Created) {
        this.formChild = new FormChid();
    }
    this.formChild.Show(this); // важно, если хочешь иметь доступ к Form.Owner (:
    this.Hide();
// конец метода
}



0



93 / 93 / 19

Регистрация: 25.12.2010

Сообщений: 316

16.01.2011, 01:22

6

А зачем если ему только и надо — показать вторую форму по нажатию кнопки. Нет я понимаю что так покруче, но разве нужно?)



0



kazrulit

16 / 16 / 3

Регистрация: 07.04.2010

Сообщений: 145

16.01.2011, 20:07

7

Делаешь так:

C#
1
2
3
4
5
6
  
public Form1()
        {
            InitializeComponent();
            this.Click+=new EventHandler(Form1_Click);
        }

Дальше делаешь так:

C#
1
2
3
4
5
private void Form1_Click(object sender, EventArgs e)
{
Form2 form2=new Form2();
form2.Show();
}

Тогда при нажатии на форму будет открываться вторая форма. Не судите, писал от руки)



1



║XLR8║

1212 / 909 / 270

Регистрация: 25.07.2009

Сообщений: 4,361

Записей в блоге: 5

16.01.2011, 22:48

8

Neser, при вызове 10 форм вы создадите около 10 форм, который будут жрать по 6-9 метров памяти каждая, сборщик мусора пашет не сразу и того, вы просто варварски используете ресурсы компьютера.



0



Windows Forms является одним из наиболее популярных инструментов разработки пользовательского интерфейса (UI) в Microsoft .NET Framework. Он обеспечивает простой и интуитивно понятный способ создания графического интерфейса для приложений Windows. Возможность вызвать другую форму является одним из важных аспектов разработки приложений на Windows Forms.

Вызов другой формы может быть полезным, когда вам нужно переключиться на другой экран или выполнить некоторые дополнительные действия. В Windows Forms это достигается путем создания экземпляра второй формы и вызова ее метода Show() или ShowDialog(). Show() открывает окно независимо от предыдущей формы, в то время как ShowDialog() делает ее модальной, то есть пока окно не будет закрыто, никакие действия на предыдущей форме не могут быть выполнены.

Пример вызова другой формы:

Form2 form2 = new Form2();

form2.ShowDialog();

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

Таким образом, вызов другой формы в Windows Forms — это мощный инструмент, который может значительно расширить возможности вашего приложения и обеспечить более удобный интерфейс пользователя. Ознакомьтесь с документацией по Windows Forms, чтобы узнать больше о вариантах использования и деталях реализации этой функциональности.

Содержание

  1. Создание окна в Windows Forms
  2. Создание новой формы
  3. Переход на новую форму
  4. Передача данных между формами
  5. Закрытие формы
  6. Взаимодействие между формами

Создание окна в Windows Forms

Для создания окна в Windows Forms необходимо выполнить несколько шагов:

  1. Откройте Visual Studio и создайте новый проект Windows Forms Application.
  2. Выберите форму, чтобы открыть редактор дизайна формы.
  3. На форму можно добавлять различные элементы управления, такие как кнопки, текстовые поля и метки. Для этого перетащите нужный элемент из панели инструментов на форму.
  4. Чтобы настроить свойства элементов управления, выберите нужный элемент на форме и измените его свойства в секции «Свойства» в редакторе дизайна.
  5. Для написания кода для формы откройте окно редактора кода, нажав дважды на форму.
  6. В редакторе кода вы можете добавлять события для элементов управления, например, обработчики событий при нажатии кнопки.
  7. В методе Main класса Program добавьте код для запуска формы:
Application.Run(new Form1());

Где Form1 — это имя вашей формы.

После завершения этих шагов, вы можете запустить приложение и увидеть созданное окно с добавленными элементами управления.

Создание новой формы

Чтобы создать новую форму в Windows Forms, следуйте следующим шагам:

  1. Откройте проект в среде разработки Visual Studio.
  2. Щелкните правой кнопкой мыши на проекте в обозревателе решений и выберите пункт меню «Добавить» -> «Форма Windows».
  3. Название новой формы может быть введено в поле «Имя» в диалоговом окне «Добавление нового элемента». Нажмите кнопку «ОК».
  4. В редакторе формы вы можете добавлять и настраивать элементы управления, устанавливать их свойства и обрабатывать события.

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

using System.Windows.Forms;
public partial class MainForm : Form
{
    public MainForm()
    {
        InitializeComponent();
    }
    private void openFormButton_Click(object sender, EventArgs e)
    {
        SecondForm secondForm = new SecondForm();
        secondForm.ShowDialog();
    }
}

В приведенном выше примере создается новый экземпляр формы «SecondForm» и вызывается метод «ShowDialog()», который отображает форму в модальном режиме. Вы можете вызвать форму и в немодальном режиме, используя метод «Show()».

Переход на новую форму

В Windows Forms для вызова другой формы необходимо выполнить следующие действия:

  1. Создать экземпляр желаемой формы:
  2. Form2 form2 = new Form2();

  3. Вызвать метод Show() на созданном экземпляре:
  4. При необходимости передать информацию на новую форму, можно использовать публичные свойства новой формы:
  5. form2.SomeProperty = value;

  6. Для закрытия текущей формы можно использовать метод Close():

Таким образом, при вызове метода Show() на экземпляре желаемой формы, новая форма появится на экране пользователя.

Передача данных между формами

В Windows Forms есть несколько способов передачи данных между формами. Ниже приведены наиболее часто используемые методы:

  • С использованием свойств: Один из самых простых способов передачи данных между формами — это использование свойств. Вы можете определить свойство на целевой форме и установить его значение из исходной формы перед открытием новой формы. Затем вы можете получить значение этого свойства на целевой форме.
  • С использованием параметров конструктора: Вы также можете передавать данные через параметры конструктора при создании экземпляра новой формы. На целевой форме вы можете получить значения этих параметров и использовать их в своей логике.
  • С использованием событий: Если вы хотите передать данные с одной формы на другую после того, как вторая форма уже открыта, вы можете использовать механизм событий. Вы можете создать событие на исходной форме, подписаться на него на целевой форме и передавать данные через аргументы события.
  • С использованием статических переменных: Когда вам нужно передать данные между формами без создания новых экземпляров формы, вы можете использовать статические переменные. Вы можете объявить статическую переменную на одной форме, установить ее значение, а затем получить значение этой переменной на другой форме.
  • С использованием общего класса данных: Если ваши формы работают с общими данными, которые могут быть доступны с разных форм, вы можете создать отдельный класс данных, в котором будут храниться эти данные. Затем вы можете использовать этот класс данных для обмена информацией между формами.

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

Закрытие формы

Чтобы закрыть форму в Windows Forms, можно использовать метод Close(). Вызов этого метода приводит к закрытию текущей формы и прекращению ее отображения.

Пример использования метода Close():

  • string message = «Вы уверены, что хотите закрыть форму?»;
  • string title = «Закрыть форму»;
  • MessageBoxButtons buttons = MessageBoxButtons.YesNo;
  • DialogResult result = MessageBox.Show(message, title, buttons);
  • if (result == DialogResult.Yes)
  • {
    • this.Close();
  • }

В этом примере перед закрытием формы выводится диалоговое окно с вопросом о подтверждении. Если пользователь подтверждает закрытие формы, то вызывается метод Close().

Взаимодействие между формами

Шаг 1: Создайте вторую форму

Прежде чем вызывать другую форму, вам необходимо создать ее. Для этого вы можете щелкнуть правой кнопкой мыши на проекте в Обозревателе решений, выбрать пункт «Добавить» и затем «Windows Forms». Задайте имя форме и нажмите кнопку «ОK».

Шаг 2: Создайте экземпляр второй формы

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

Form2 form2 = new Form2();

Шаг 3: Откройте вторую форму

После создания экземпляра второй формы, вам нужно открыть ее. Для этого вызовите метод Show() или ShowDialog() у объекта второй формы:

form2.Show();

Использование метода Show() вызывает открытие формы, не блокируя взаимодействие с первой формой. В то время как использование метода ShowDialog() открывает форму и блокирует взаимодействие с первой формой до тех пор, пока вторая форма не будет закрыта.

Шаг 4: Передайте данные между формами

При взаимодействии между формами вы можете передавать данные из одной формы в другую. Для этого второй форме нужно добавить публичные свойства или методы, доступные из первой формы. Например, вы можете добавить свойство Name во вторую форму и установить его значение из первой формы:

form2.Name = "John";

Шаг 5: Получите результат из второй формы

После того, как вторая форма будет закрыта, вы можете получить результат из нее в первой форме. Для этого вам необходимо использовать свойство DialogResult второй формы. Оно будет содержать результат диалога или пользовательское действие, выполненное во второй форме, например, кнопку «ОК» или «Отмена».

В первой форме вы можете проверить значение свойства DialogResult и выполнить соответствующие действия. Например, если результат диалога — кнопка «ОК», вы можете выполнить определенное действие:

if (form2.DialogResult == DialogResult.OK)

{

    // выполните действие

}

Это подробное руководство позволяет вам вызывать другую форму в Windows Forms и взаимодействовать между ними. Помните, что это только основы и вы можете расширить функциональность по своему усмотрению.

Работа с двумя формами

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

Проект->Добавить новый элемент->Visual C++->UI->Форма Windows Forms
Меняем название на MyForm2.h и жмем «Добавить».

Теперь имеем две формы: MyForm.h и MyForm2.h.

Как перейти к форме 2 по нажатию кнопки в форме 1

Для начала в коде формы 1 после #pragma once добавим #include "MyForm2.h".
Теперь в коде кнопки перехода к форме 2 напишем:

MyForm2^ frm = gcnew MyForm2();
frm->Show();                     //вызов формы 2

Перейдем к коду формы 2

Как перенести записанную в textBox строку формы 2 в textBox формы 1

В коде формы 2 вставим текс, как показано в примере:

public ref class MyForm2 : public System::Windows::Forms::Form
	{
	public:
                // почти в самом верху добавим эти три строчки
		String^ Str(){
			return textBox1->Text;
		}

Теперь создадим в форме 2 button1 и button2.
В свойствах кнопки button1 в разделе DialogResult поставим OK.              
А в свойствах кнопки button2 в разделе DialogResult поставим Cancel.

Код для них писать не надо! Об этом авторы позаботились.

Вернемся к коду формы 1

В коде кнопки перехода после MyForm2^ frm = gcnew MyForm2(); напишем:

if(frm->ShowDialog()==System::Windows::Forms::DialogResult::OK){
          String^ str = frm->Str();
          textBox1->Text = str;      
}

Запускаем программу.

  • Как создать второй том на жестком диске windows 10
  • Как создать виртуальный рабочий стол в windows 10 как в
  • Как создать второй рабочий стол в windows 10 для другого пользователя
  • Как создать виртуальный привод в ultraiso windows 10
  • Как создать второй рабочий стол в windows 10 без ярлыков