Как добавить форму в проект (Windows Forms .NET)
Добавьте формы в свой проект с помощью Visual Studio. Если в приложении несколько форм, вы сможете выбрать начальную форму для приложения или одновременно отобразить несколько форм.
Документация по рабочему столу для .NET 7 и .NET 6 находится в стадии разработки.
Добавление новой формы
Добавьте новую форму в Visual Studio.
- В Visual Studio найдите панель Обозреватель проектов. Щелкните проект правой кнопкой мыши и выберите Добавить>Форма (Windows Forms).
- В поле Имя введите имя формы, например MyNewForm. Visual Studio сформирует имя по умолчанию, которое является уникальным. Можно использовать это имя.

После добавления формы Visual Studio откроет конструктор форм для этой формы.
Добавление ссылки на проект в форму
Если у вас есть исходные файлы для формы, можно добавить форму в проект, скопировав файлы в папку проекта. Ссылки на все файлы кода в папке проекта и в дочерних папках проекта будут автоматически добавлены в проект.
Форма включает два файла с одинаковыми именами и разными расширениями: form2.cs (form2 — пример имени файла) и form2.Designer.cs. Иногда присутствует файл ресурсов с тем же именем — form2.resx. В предыдущем примере form2 представляет собой базовое имя файла. Необходимо скопировать все связанные файлы в папку проекта.
Кроме того, можно использовать Visual Studio для импорта файла в проект. При добавлении существующего файла в проект файл копируется в папку проекта.

- В Visual Studio найдите панель Обозреватель проектов. Щелкните проект правой кнопкой мыши и выберите Добавить>Существующий элемент.
- Перейдите в папку, содержащую файлы формы.
- Выберите файл form2.cs, где form2 — базовое имя файла для связанных файлов формы. Не выбирайте другие файлы, например form2.Designer.cs.
См. также
- Как расположить форму и изменить ее размер (Windows Forms .NET)
- Общие сведения о событиях (Windows Forms .NET)
- Размещение и компоновка элементов управления (Windows Forms .NET)
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
.NET Desktop feedback
The .NET Desktop documentation is open source. Provide feedback here.
Обратная связь
Отправить и просмотреть отзыв по
Как создать форму в visual studio 2019 c
БлогNot. C#: простое взаимодействие форм в проектах Visual Studio
C#: простое взаимодействие форм в проектах Visual Studio
Довольно часто окно приложения должно как взаимодействовать с другими окнами (формами), так и получать данные из окон стандартных системных диалогов.
В этой заметке рассмотрим простейшие приёмы взаимодействия форм, старая статья для C++/CLI была вот тут.
Предполагается, что мы умеем создавать нужный тип проекта, перетаскивать компоненты из панели элементов в конструктор форм, а также вставлять функции-обработчики событий двойным кликом по нужному событию в окне свойств компонент.
1. Пример конструирования и программного вызова формы
Код может быть выполнен, например, по нажатию кнопки button1 в главной форме.
Form form2 = new Form (); Button button2 = new Button (); button2.Text = "OK"; button2.Location = new Point (10, 10); form2.Text = "Моё окно"; form2.HelpButton = true; form2.FormBorderStyle = FormBorderStyle.FixedDialog; form2.StartPosition = FormStartPosition.CenterScreen; form2.Controls.Add (button2); form2.ShowDialog ();
Для добавления обработчика нажатия программно сгенерированной кнопки button2 достаточно перед последней строкой кода написать:
button2.Click += new EventHandler (this.button2_Click);
— до того, как будет вызван метод form2.ShowDialog() или form2.Show() ;
При этом код обработчика размещён в текущем модуле Form1.cs , например:
private void button2_Click (Object sender, EventArgs e)
2. Вызвать форму из формы
В верхнем меню выберем Проект — Добавить форму — Форма (Windows Forms) — имя Form2.
Добавим код там, где нужно создать и вызвать вторую форму:
static int count; //в классе формы Form1 //. Form2 F2 = new Form2 (); F2.Text = "Form " + ++count; F2.Show ();
Как вариант, может быть реализован и массив форм (или иной контейнер).
Опишем нужные данные в классе формы Form1:
const int MAX_FORMS = 3; //Максимальное количество форм static int FormCount; //Счётчик форм private Form [] forms; //Будущий массив форм
Потом инициализируем данные по событию Load главной формы:
forms = new Form [MAX_FORMS];
Затем реализуем код для создания очередной формы:
if (FormCount < MAX_FORMS) < forms [FormCount] = new Form2 (); forms [FormCount].Text = "Form " + FormCount; forms [FormCount].Show (); FormCount++; >else
Если мы хотим создавать дочерние формы не отдельно, а внутри родительской формы, то в свойствах Form1 нужно указать, что она «предок» (установить свойство IsMdiContainer = true ), а перед показом дочерней формы оператором forms [FormCount].Show (); пометить её как потомка Form1 :
forms [FormCount].MdiParent = this;
Родительская и дочерняя формы могут легко ссылаться друг на друга, например, если Form1 — родительская форма, а Form2 — дочерняя, родитель может вызвать публичный метод потомка
Form2 activeChild = this.ActiveMdiChild as Form2; if (activeChild != null)
Form1 parent = this.MdiParent as Form1; if (parent != null)
3. Наладить взаимодействие двух и более отдельных форм
Пусть имеются 2 формы, Form1 и Form2 , при этом на Form1 располагаются Button ( button1 , будет открывать вторую форму) и Label ( label1 , здесь будем менять текст). На Form2 — button2 , по нажатию на которую будет происходить смена текста в label1 .
3.1. В классе первой формы пропишем ссылку на себя, на форму потомка, предусмотрим их инициализацию в конструкторе Form1 , а также реализуем публичный метод, который будем вызывать из второй формы.
public static Form1 SelfRef < get; set; >public static Form2 ChildRef < get; set; >public Form1 () < InitializeComponent (); SelfRef = this; ChildRef = new Form2 (); >public void set (string text)
3.2. По нажатию button1 будем показывать имеющийся экземпляр второй формы.
private void button1_Click (object sender, EventArgs e)
3.3. По клику кнопки в Form2 будем вызывать метод set первой формы:
private void button2_Click (object sender, EventArgs e) < if (Form1.SelfRef != null) < Form1.SelfRef.set ("hello from form2"); Form1.SelfRef.Show (); this.Hide (); >>
Аналогично, передавая в конструктор второй формы ссылку на экземпляр первой формы, мы могли бы получать сообщения от произвольного количества форм.
//Изменённое содержимое класса Form1.cs public static Form1 SelfRef < get; set; >static int Tag; public Form1 () < InitializeComponent (); SelfRef = this; >public void set (string text) < label1.Text = text; >private void button1_Click (object sender, EventArgs e)
//Изменённое содержимое класса Form2.cs private Form1 ParentRef; int Tag; public Form2 (Form1 ParentRef, int Tag) < InitializeComponent (); this.ParentRef = ParentRef; this.Tag = Tag; this.Text = "Form " + Tag; >private void button2_Click (object sender, EventArgs e) < if (ParentRef != null) < Form1.SelfRef.set ("hello from form " + Tag); Form1.SelfRef.Show (); >>
4. Загрузка файла в текстовое поле, использование стандартных диалогов
- многострочное поле textBox1 ( MultiLine=true , Doc = Fill );
- кнопки для открытия ( button1 ) и закрытия ( button2 ) файлов или аналогичные пункты меню;
- диалоги openFileDialog1 и saveFileDialog1 .
Пример основной части кода класса:
private void открытьToolStripMenuItem_Click (object sender, EventArgs e) < if (openFileDialog1.ShowDialog (this) == DialogResult.OK && openFileDialog1.FileName != null) < try < // Создание экземпляра StreamReader для чтения из файла System.Text.Encoding Coding = System.Text.Encoding.GetEncoding (1251); System.IO.StreamReader Reader = new System.IO.StreamReader (openFileDialog1.FileName, Coding); textBox1.Text = Reader.ReadToEnd (); Reader.Close (); textBox1.Modified = false; >catch (System.IO.FileNotFoundException e1) < MessageBox.Show (e1.Message + "\nНет такого файла", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); >catch (Exception e2) < // Отчет о других ошибках MessageBox.Show (e2.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); >> else < openFileDialog1.FileName = ""; openFileDialog1.Dispose (); >> private void сохранитьToolStripMenuItem_Click (object sender, EventArgs e) < saveFileDialog1.FileName = openFileDialog1.FileName; if (saveFileDialog1.ShowDialog () == DialogResult.OK) < Write (); >> void Write () < try < // Создание экземпляра StreamWriter для записи в файл: System.Text.Encoding Coding = System.Text.Encoding.GetEncoding ("utf-8"); // заказ кодовой страницы UTF-8 System.IO.StreamWriter Writer = new System.IO.StreamWriter (saveFileDialog1.FileName, false, Coding); Writer.Write (textBox1.Text); Writer.Close (); //или System.IO.File.WriteAllText(saveFileDialog1.FileName, textBox1.Text); textBox1.Modified = false; >catch (Exception e) < MessageBox.Show (e.Message, "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); >> private void textBox1_KeyUp (object sender, KeyEventArgs e) < if (Char.IsControl ((char)e.KeyValue) == false) textBox1.Modified = true; >private void Form1_FormClosing (object sender, FormClosingEventArgs e) < if (textBox1.Modified == false) return; DialogResult MBox = MessageBox.Show ("Текст был изменен.\nСохранить изменения?", "Простой редактор", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Exclamation); if (MBox == DialogResult.No) return; if (MBox == DialogResult.Cancel) e.Cancel = true; if (MBox == DialogResult.Yes) < if (saveFileDialog1.ShowDialog () == DialogResult.OK) < Write (); return; >else e.Cancel = true; // Передумал выходить > >
О разработке MDI-приложения на C# Windows Forms говорится в этой статье.
27.01.2023, 11:57 [425 просмотров]
Нет Windows forms в Visual Studio, можно установить?
Установил Visual Studio 2017 community, но в c++ при создании проекта нет Windows Form, можно как-нибудь установить?
P. S. в c# есть Windows Forms.
- Вопрос задан более трёх лет назад
- 55616 просмотров
Комментировать
Решения вопроса 1

Скорее всего вы не включили C++/CLI во время установки Visual Studio 2017
1. При создании проекта жмем «Открыть установщик Visual Studio»

2. В установщике под Visual Studio 2017 Community жмем кнопку Modify

3. В открывшемся окне выбираем вкладку «Individual Components» (Индивидуальные компоненты)

4. Мотаем в низ пока не увидим «Поддержка C++/CLI», затем слева ставим галочку

5. После в правом-нижнем углу жмем кнопку Modify, готово!
P.S. Если у вас установщик на русском, то названия могут отличаться.
Динамическое изменение свойств объектов Windows Form в Visual Studio
Разместите на форме три кнопки (Button), напротив каждой
разместите поле ввода (TextBox) и один список (ListBox). Создайте три
обработчика нажатия на данные кнопки, которые будут менять текст в
списке. Текст для списка берется из поля ввода напротив нажимаемой
кнопки. Создайте обработчик события заданной формы (Load), который
будет очищать список.
Помогите разобраться ребят
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:

Динамическое изменение свойств объектов Windows Form
Разместите на форме ряд кнопок (Button). Создайте обработчики события нажатия на данные кнопки.
Фон Windows form в Visual studio
Приветствую дорогие форумчане интересуюсь возможностью изменения внешнего вида формы приложения а.
Windows form в Visual Studio 2015
Всем привет, я очень давно не сталкивался с C++, но сейчас решил учить этот язык для создания.
Как добавить Windows Form в Visual Studio C++?
Задание для курсовой у меня, реализовать иерархию классов в Windows Form, но у меня нет такой.
1055 / 670 / 217
Регистрация: 08.08.2014
Сообщений: 2,089
В Visual Studio создать проект C#/WinForms.
Проект будет сразу создан с главной формой.
Открыть форму в редакторе.
С панели перетащить на форму кнопки, поля ввода и список.
Задать для них описания и внутренние названия (чтобы в коде было понятно).
Даблклик в кнопку на форме в дизайнере, автоматически создастся и привяжется обработчик события, где можно реализовать требумую логику.
Регистрация: 11.04.2019
Сообщений: 9
Если что я полный ноль в этом всём
172 / 118 / 57
Регистрация: 08.01.2013
Сообщений: 651
Сообщение от mrfrain74 
Если что я полный ноль в этом всём
Тогда советую Вам почитать учебник или посмотреть видеоуроки, благо таких видеоуроков хватает на youtube
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Как вернуть Windows Form Application C++/CLI в Visual Studio 12?
Приветствую вас новички! Так как "Microsoft" удалила возможность создания C ++ / CLI приложений.
как создать пятнашки в Windows Form (Visual studio 2017)
Помогите, пожалуйста создать пятнашки в Windows Form (Visual studio 2017)
Непонятное поведение Windows Form в Visual Studio 2019 Community
Добрый день! Я только начал разработку и знакомства с миром С#, поэтому многие моменты не понимаю.

Динамическое изменение свойств
Здравствуйте! Помогите разобраться с простой задачей. Необходимо изменить значение display.
Динамическое изменение свойств объекта
есть код по клику на кнопку открывается выпадающее меню css .sub-menu < padding:5px 0 5px.
Динамическое изменение прозрачности Form
Братья по разуму,кто подскажет несведущему ,как постепенно уменьшать прозрачность формы. Пробовал.
