Как создать новую форму в windows forms
Чтобы добавить еще одну форму в проект, нажмем на имя проекта в окне 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)
Теперь сделаем наоборот — чтобы вторая форма воздействовала на первую. Пока вторая форма не знает о существовании первой. Чтобы это исправить, надо второй форме как-то передать сведения о первой форме. Для этого воспользуемся передачей ссылки на форму в конструкторе.
Итак перейдем ко второй форме и перейдем к ее коду — нажмем правой кнопкой мыши на форму и выберем 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)
Поскольку в данном случае ключевое слово this представляет ссылку на текущий объект — объект Form1, то при создании второй формы она будет получать ее (ссылку) и через нее управлять первой формой.
Теперь после нажатия на кнопку у нас будет создана вторая форма, которая сразу изменит цвет первой формы.
Мы можем также создавать объекты и текущей формы:
private void button1_Click(object sender, EventArgs e)
При работе с несколькими формами надо учитывать, что одна из них является главной — которая запускается первой в файле Program.cs. Если у нас одновременно открыта куча форм, то при закрытии главной закрывается все приложение и вместе с ним все остальные формы.
Не добавляется новая форма в проект C# Visual Studio 19

Создаю небольшое Windows Forms приложение и необходимо добавить вторую форму, но почему то когда нажимаю на проект правой кнопкой мыши -> Добавить -> Форма Windows Forms, я не вижу в принципе пункта для создания формы (как я посмотрел в разных источниках, пункт должен называться Windows Forms). Мб я где то не там ищу, тк вариант с не установленными компонентами вероятно отпадает, поскольку проект с одной формой я смог создать. Подскажите, пожалуйста, что может быть не так? Если какой то информации не хватает, спрашивайте, дополню. Заранее спасибо!
Отслеживать
задан 13 мар 2021 в 7:32
90 9 9 бронзовых знаков
Вы не устанавливали обновление? У меня такая же проблема возникла после установки обновление.
1 янв 2022 в 16:38
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Проблема решена, всё таки не был установлен компонент «Разработка классических приложений .NET», только странно почему всё же проект WindowsForms создался
Отслеживать
ответ дан 13 мар 2021 в 8:21
90 9 9 бронзовых знаков
- winforms
- visual-studio
-
Важное на Мете
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.10.27.43697
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Открытие другой формы
Существуют два диалоговых окна: Form1 и Form2, как осуществить с помощью нажатия баттона в Form1 открытие Form2? Помогите пожалуйста, а то после Делфи очень сложно разобраться.
P.S. Подскажите также какие-нибудь учебники по Windows Forms, гугл не помогает
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Очистка данных формы, открытие другой формы
И снова здравствуйте, дорогие жители форума. Столкнулся с простой на первый взгляд проблемой, но.
Открытие и закрытие формы из другой формы
помогите пожалуйста. из формы1 открывается форма2, а при закрытии формы2 должна открываться.
Открытие одной формы из другой.
Такая тема. Вообщем есть допустим 2 формы. Объявляю в первой форме остальную как обычно. form2.
Закрытие формы и открытие другой
Товарищи, помогите, подскажите как закрыть форму. Дело вот вот в чем: есть главная форма: .
417 / 285 / 3
Регистрация: 29.07.2009
Сообщений: 1,981
1 2 3 4 5
private void button1_Click(object sender, EventArgs e) { Form f2 = new Form(); f2.Show(); }
Сообщение от hike38 
Подскажите также какие-нибудь учебники по Windows Forms
Регистрация: 11.05.2009
Сообщений: 26
а если я хочу не создавать новую форму, а открыть уже существующую в проекте Form2, как это реализовать?
4336 / 1505 / 101
Регистрация: 12.04.2009
Сообщений: 2,342
Всмысле открыть существующую? Вы должны создать экземпляр класса Form2
Form2 f2 = new Form2();
f2.Show();
Регистрация: 11.05.2009
Сообщений: 26
ок, спасибо, это я и имел в виду
Регистрация: 24.05.2012
Сообщений: 93
Я конечно припозднился )) но чтоб не создавать новую тему спрошу тут. Вот тот метод который вы советуете у меня не работает. Пишу так.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace VKPublicAdmin { public partial class MainForm : Form { public MainForm() { InitializeComponent(); } //AboutForm AbForm; private void MenuItem3_About_Click(object sender, EventArgs e) { AboutForm AbForm = new AboutForm(); AbForm.Show(); } } }
И когда выбираю пункт меню и кликаю на нем, то ничего не происходит. Я пол дня уже голову ломаю.
Регистрация: 21.10.2012
Сообщений: 140
Добавляешь две формы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
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 Test { public partial class Parent : Form { public Parent() { InitializeComponent(); } private void Show_Click(object sender, EventArgs e) { Child form1 = new Child(); form1.ShowDialog(); } } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
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 Test { public partial class Child : Form { public Child() { InitializeComponent(); } private void Close_Click(object sender, EventArgs e) { this.Close(); } } }
Как открыть новую форму на месте старой?
Здравствуйте не хотел плодить новые темы, подскажите как сделать переход форм красивым. то есть что бы когда открывалась форма 2 она открывалась на том же месте где была первая( если ее допустим перетягивали) а не по центру экрана или еще где(в зависимости от настроек)
для перехода форм использую
Кликните здесь для просмотра всего текста
1 2 3 4
Form2 fr2 = new Form2(); fr2.Show(); Hide();
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Открыть новую форму в середине старой
Всем привет! Как сделать что бы при нажатии кнопки, которая расположена на Form1, открывалась.
Как открыть новую форму?
Здравствуйте! Подскажите, пожалуйста, как открыть новую форму? Это форма была не создана, а.
Открыть форму в форме в определенном месте
Доброго времени суток! 1. Подскажите пж как открыть форму в форме в определенном месте?
Открыть новую форму по щелчку в DGV
вопрос до боли тупой Но решения так не нашел как сделать так что бы при двойном кликом на.
547 / 478 / 315
Регистрация: 24.09.2013
Сообщений: 3,345
Записей в блоге: 1
Много лет использую код для перехода между любыми формами в любом направлении и передачи данных
1 2 3 4 5 6 7 8
{ private void button1_Click(object sender, EventArgs e) { Form2 f2 = new Form2(); f2.Show(); this.Hide(); } }